这是我的问题。我现在正在使用 Java Apache POI 读取 Excel(.xls 或 .xlsx)文件,并显示内容。电子表格中有一些日语字符,我得到的所有日语字符都是“???”在我的输出中。我尝试过使用Shift-JIS、UTF-8等多种编码方式,但是都不行...
下面是我的编码代码:
public String encoding(String str) throws UnsupportedEncodingException{
String Encoding = "Shift_JIS";
return this.changeCharset(str, Encoding);
}
public String changeCharset(String str, String newCharset) throws UnsupportedEncodingException {
if (str != null) {
byte[] bs = str.getBytes();
return new String(bs, newCharset);
}
return null;
}
我正在传入编码(str)的每个字符串。但是当我打印返回值时,它仍然是类似“???”的东西(如下所示)但不是日语字符(平假名、片假名或汉字)。
title-jp=???
任何人都可以帮我解决这个问题吗?太感谢了。
Your changeCharset
方法似乎很奇怪。String
Java 中的对象最好被认为没有特定的字符集。它们使用 Unicode,因此可以表示所有字符,而不仅仅是一个区域子集。您的方法说:使用我的系统的字符集(无论是什么)将字符串转换为字节,然后尝试使用其他字符集(在中指定)解释这些字节newCharset
),因此这可能行不通。如果您转换为编码中的字节,则应该使用相同的编码读取这些字节。
Update:
要将字符串转换为 Shift-JIS(日本常用的区域编码),您可以说:
byte[] jis = str.getBytes("Shift_JIS");
如果将这些字节写入文件,然后在区域设置全部以日本为中心的 Windows 计算机上的记事本中打开该文件,记事本将以日语显示它(没有其他内容可继续,它会假设文本是在系统的本地编码中)。
但是,您同样可以将其另存为 UTF-8(以 3 字节 UTF-8 引导符序列为前缀),记事本也会将其显示为日语。 Shift-JIS 仅one将日语文本表示为字节的方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)