我已经编写了简单的转换代码,可以从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��*
有人知道我犯了错误或需要其他逻辑的地方,真的很有帮助!
答案 0 :(得分:2)
您String
已经是String
,因此您的方法是“错误的”。 UTF8是一种byte[]
编码,可以在Java中转换为String
。
它应显示为:
private static byte[] convertUTF8ToShiftJ(byte[] uft8) {
如果要将UTF8 byte[]
转换为JIS byte[]
:
private static byte[] convertUTF8ToShiftJ(byte[] uft8) {
String s = new String(utf8, StandardCharsets.UTF_8);
return s.getBytes( Charset.forName("SHIFT-JIS"));
}
String
之后可以将byte[]
转换为mystring.getBytes(encoding)
答案 1 :(得分:2)
似乎您对String编码有概念上的误解。 例如,请参见Byte Encodings and Strings。
将String
从一种编码转换为另一种编码是没有意义的,
因为String
是与编码无关的东西。
但是,String
可以用各种编码的字节数组表示
(例如UTF-8或Shift-JIS)。
因此,转换UTF-8编码的 byte数组是有意义的
到Shift-JIS编码的字节数组。
private static byte[] convertUTF8ToShiftJ(byte[] utf8Bytes) throws IllegalCharsetNameException {
String s = new String(utf8Bytes, StandardCharsets.UTF_8);
byte[] shftJBytes = s.getBytes(Charset.forName("SHIFT-JIS"));
return shftJBytes;
}