在 Java 中,我正在从以 Shift-JIS 格式编码的文件中读取字节数组,但获取的字符串中字符的“样式”看起来与普通字符串不同(更宽?)。
以下是我对“P”字母含义的示例:
P - P
正如您所看到的,Shift-JIS 中的第一个看起来与第二个不同。有没有办法即使对于 Shift-JIS 字符串也可以使用“正常”字符?
我正在使用这段代码来执行转换:
String jis = new String(byteArray, Charset.forName("Shift_JIS"));
最佳答案
严格来说,这是不同的角色。第一个 P
是 Unicode 中的全角拉丁大写字母 P
,来自日语 JIS X 0208 字符集 (U+FF30)。第二个 P
是来自 ASCII (U+0050) 的拉丁大写字母 P
。
因此,您必须将全角字符转换为半角字符。您可以使用 ICU4J 的 Transliterator 来完成此操作.
Transliterator transliterator = Transliterator.getInstance("Halfwidth-Fullwidth");
String result = transliterator.transliterate("P - P");
System.out.println(result); // You will get "P - P"
关于java - Shift-JIS 编码字符串的不同字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37992270/