我正在用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
,如第一个答案here中所述
欢迎任何建议。
发布于 2011-01-20 08:14:06
不需要太复杂。只需生成一个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 );
https://stackoverflow.com/questions/4744722
复制