Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java6中使用UFT-8BOM文件的文本编码_Java_Utf 8_Windows 1255 - Fatal编程技术网

在Java6中使用UFT-8BOM文件的文本编码

在Java6中使用UFT-8BOM文件的文本编码,java,utf-8,windows-1255,Java,Utf 8,Windows 1255,我得到了希伯来语和阿拉伯语的txt文件,带有UTF-8 BOM编码。 我需要根据内容将其转换为Windows-1255或Windows-1256 在运行时,我如何知道要使用的正确编码 Mosilla UniversalDetector和我找到的任何其他解决方案都不走运。 有什么想法吗?(我需要用Java 6来做。不要问为什么…从Java 1.7开始,字符类知道Unicode脚本,如阿拉伯语和希伯来语 int freqs = s.codePoints().map(cp ->

我得到了希伯来语和阿拉伯语的txt文件,带有UTF-8 BOM编码。 我需要根据内容将其转换为Windows-1255或Windows-1256

在运行时,我如何知道要使用的正确编码

Mosilla UniversalDetector和我找到的任何其他解决方案都不走运。
有什么想法吗?(我需要用Java 6来做。不要问为什么…

从Java 1.7开始,字符类知道Unicode脚本,如阿拉伯语和希伯来语

int freqs = s.codePoints().map(cp ->
        Character.UnicodeScript.of(cp) == Character.UnicodeScript.ARABIC ? 1
        : Character.UnicodeScript.of(cp) == Character.UnicodeScript.HEBREW ? -1
        : 0).sum();
对于java 1.6,方向性可能就足够了,因为有一个从右到左和从右到左的阿拉伯语:

    String s = "אבגדהאבגדהصضطظع"; // First Hebrew, then Arabic.
    int i0 = 0;
    for (int i = 0; i < s.length(); ) {
        int codePoint = s.codePointAt(i);
        i += Character.charCount(codePoint);
        boolean rtl = Character.getDirectionality(codePoint)
                == Character.DIRECTIONALITY_RIGHT_TO_LEFT;
        boolean rtl2 = Character.getDirectionality(codePoint)
                == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC;
        System.out.printf("[%d - %d] '%s': LTR %s %s%n",
                i0, i, s.substring(i0,  i), rtl, rtl2);
        i0 = i;
    }

[0 - 1] 'א': LTR true false
[1 - 2] 'ב': LTR true false
[2 - 3] 'ג': LTR true false
[3 - 4] 'ד': LTR true false
[4 - 5] 'ה': LTR true false
[5 - 6] 'א': LTR true false
[6 - 7] 'ב': LTR true false
[7 - 8] 'ג': LTR true false
[8 - 9] 'ד': LTR true false
[9 - 10] 'ה': LTR true false
[10 - 11] 'ص': LTR false true
[11 - 12] 'ض': LTR false true
[12 - 13] 'ط': LTR false true
[13 - 14] 'ظ': LTR false true
[14 - 15] 'ع': LTR false true

在Java1.7中,字符类知道Unicode脚本,如阿拉伯语和希伯来语

int freqs = s.codePoints().map(cp ->
        Character.UnicodeScript.of(cp) == Character.UnicodeScript.ARABIC ? 1
        : Character.UnicodeScript.of(cp) == Character.UnicodeScript.HEBREW ? -1
        : 0).sum();
对于java 1.6,方向性可能就足够了,因为有一个从右到左和从右到左的阿拉伯语:

    String s = "אבגדהאבגדהصضطظع"; // First Hebrew, then Arabic.
    int i0 = 0;
    for (int i = 0; i < s.length(); ) {
        int codePoint = s.codePointAt(i);
        i += Character.charCount(codePoint);
        boolean rtl = Character.getDirectionality(codePoint)
                == Character.DIRECTIONALITY_RIGHT_TO_LEFT;
        boolean rtl2 = Character.getDirectionality(codePoint)
                == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC;
        System.out.printf("[%d - %d] '%s': LTR %s %s%n",
                i0, i, s.substring(i0,  i), rtl, rtl2);
        i0 = i;
    }

[0 - 1] 'א': LTR true false
[1 - 2] 'ב': LTR true false
[2 - 3] 'ג': LTR true false
[3 - 4] 'ד': LTR true false
[4 - 5] 'ה': LTR true false
[5 - 6] 'א': LTR true false
[6 - 7] 'ב': LTR true false
[7 - 8] 'ג': LTR true false
[8 - 9] 'ד': LTR true false
[9 - 10] 'ה': LTR true false
[10 - 11] 'ص': LTR false true
[11 - 12] 'ض': LTR false true
[12 - 13] 'ط': LTR false true
[13 - 14] 'ظ': LTR false true
[14 - 15] 'ع': LTR false true

您的意思是尽管有UTF-8 BOM,但编码不是UTF-8,还是说它是UTF-8,并且根据使用的脚本,它们应该转换为Windows编码?或者采用任何一种编码,并且可以编码为UTF-8?@JoopEggen编码为UTF-8,但我需要知道正确的语言(希伯来语或阿拉伯语),以便将文件转换为新的编码。可能重复的您的意思是,尽管有UTF-8 BOM,但编码不是UTF-8,或者你的意思是它是UTF-8格式的,并且根据所使用的脚本,它们应该转换为Windows编码吗?或者是采用任何一种编码,并且可以编码为UTF-8?@JoopEggen编码为UTF-8,但我需要知道正确的语言(希伯来语或阿拉伯语),以便将文件转换为新的编码。工作非常顺利。谢谢工作得很有魅力。谢谢