java - Shift-JIS 编码字符串的不同字体

标签 java character-encoding character non-ascii-characters shift-jis

在 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/

相关文章:

c++ - mblen 和 strlen 有什么区别?

delphi - 如何在没有每新行给出两个字符的情况下计算 RichEdit 中的字符数?

Python - 慢慢输入每个字符

java - Spring Batch Kafka Kafka 到数据库作业

Java:创建对象时出现 nullPointerException

java - Togglz JDBCStateRepository 自动在 DB2 中创建格式错误的表

java - 每次附加到 CSV 文件时都会使用不同的编码

java - 在 windows 和 linux 中转换字符集

string - 在 Swift 中计算不同的字符

java - 在java中使用Set/TreeSet的平均时间复杂度是多少?