Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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
如何将自定义编码文件转换为UTF-8(使用Java或专用工具)_Java_Encoding_Character Encoding - Fatal编程技术网

如何将自定义编码文件转换为UTF-8(使用Java或专用工具)

如何将自定义编码文件转换为UTF-8(使用Java或专用工具),java,encoding,character-encoding,Java,Encoding,Character Encoding,我正在用Java重写的一个遗留软件使用自定义(类似于Win-1252)编码作为数据存储。对于我正在构建的新系统,我想用UTF-8替换它 因此,我需要将这些文件转换为UTF-8以提供数据库。我知道使用的字符映射,但它不是任何广为人知的。例如,“A”在位置0x0041上(如Win-1252),但在0x0042上,有一个符号在UTF-8中出现在位置0x0102上,以此类推。有没有一种简单的方法可以用Java解码和转换这些文件 我已经读过很多帖子,但它们都涉及某种行业标准编码,而不是定制编码。我希望可以

我正在用Java重写的一个遗留软件使用自定义(类似于Win-1252)编码作为数据存储。对于我正在构建的新系统,我想用UTF-8替换它

因此,我需要将这些文件转换为UTF-8以提供数据库。我知道使用的字符映射,但它不是任何广为人知的。例如,“A”在位置0x0041上(如Win-1252),但在0x0042上,有一个符号在UTF-8中出现在位置0x0102上,以此类推。有没有一种简单的方法可以用Java解码和转换这些文件

我已经读过很多帖子,但它们都涉及某种行业标准编码,而不是定制编码。我希望可以创建一个自定义
java.nio.ByteBuffer.CharsetDecoder
java.nio.charset.charset
来将其传递给
java.io.InputStreamReader
,如第一个答案所述


欢迎提出任何建议。

不必太复杂。只需创建一个256个字符的数组

static char[] map = { ... 'A', '\u0102', ... }
然后

read each byte b in source
    int index = (0xff) & b; // to make it unsigned
    char c = map[index];
    target.write( c );