java将UTF8转换为ShiftJIS
我已经编写了从UTF-8转换为日语字符的简单转换代码
private static String convertUTF8ToShiftJ(String uft8Strg) {
String shftJStrg = null;
try {
byte[] b = uft8Strg.getBytes(UTF_8);
shftJStrg = new String(b, Charset.forName("SHIFT-JIS"));
logger.info("Converted to the string :" + shftJStrg);
} catch (Exception e) {
e.printStackTrace();
return uft8Strg;
}
return shftJStrg;
}
但它给出了输出误差
convertUTF8ToShiftJ START !!
uft8Strg=*** abc000.sh ����started�
*** abc000.sh å®�è¡�ä¸ï¼�executing...ï¼�
*** abc000.sh ����ended��*
有没有人知道,如果我犯了一个错误或需要一些额外的逻辑,这将是非常有帮助的
# 1 楼答案
似乎您对字符串编码有概念上的误解。 例如,见Byte Encodings and Strings
将
String
从一种编码转换为另一种编码没有意义, 因为String
是一种独立于编码的东西但是
String
可以用各种编码的字节数组表示 (例如UTF-8或Shift JIS)。 因此,转换UTF-8编码的字节数组 到Shift-JIS编码的字节数组# 2 楼答案
您
String
已经是String
,因此您的方法是“错误的”。UTF8是一种编码,它是byte[]
,在Java中可以转换为String
应改为:
如果要将UTF8
byte[]
转换为JISbyte[]
:一个
String
可以稍后通过mystring.getBytes(encoding)
转换成一个byte[]
有关详细信息,请参见The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)