Shift-JIS 编码字符串的不同字体
Different font for Shift-JIS encoded string
在 Java 中,我正在从一个以 Shift-JIS 格式编码的文件中读取一个字节数组,但是获取的字符串中字符的 "style" 看起来与普通字符串不同(更宽?)。
这是我对 "P" 字母的意思的示例:
P - P
如您所见,Shift-JIS 中的第一个看起来与第二个不同。有没有办法对 Shift-JIS 字符串使用 "normal" 个字符?
我正在使用这段代码来执行转换:
String jis = new String(byteArray, Charset.forName("Shift_JIS"));
下表显示了 J2SE 5.0 支持的 Japanese
编码集。新的 java.nio API 使用的规范名称在许多情况下与 java.io 和 java.lang API 中使用的规范名称不同。您可以使用其他日文字体。
----------------------------------------------------------------------------------------------
|Canonical Name for | Canonical Name for java.io | Description |
| java.nio API | and java.lang API | |
----------------------------------------------------------------------------------------------
| EUC-JP | EUC_JP | JISX 0201, 0208 and 0212, EUC encoding |
| | | Japanese |
----------------------------------------------------------------------------------------------
| ISO-2022-JP | ISO2022JP | JIS X 0201, 0208, in ISO 2022 form, |
| | | Japanese |
----------------------------------------------------------------------------------------------
| Shift_JIS | SJIS | Shift-JIS, Japanese |
----------------------------------------------------------------------------------------------
| windows-31j | MS932 | Windows Japanese |
----------------------------------------------------------------------------------------------
| x-euc-jp-linux | EUC_JP_LINUX | JISX 0201, 0208, EUC encoding Japanese |
----------------------------------------------------------------------------------------------
| x-eucJP-Open | EUC_JP_Solaris | JISX 0201, 0208, 0212, EUC encoding |
| | | Japanese |
----------------------------------------------------------------------------------------------
| x-IBM33722 | Cp33722 | IBM-eucJP - Japanese (superset of 5050) |
----------------------------------------------------------------------------------------------
| x-IBM930 | Cp930 | Japanese Katakana-Kanji mixed with 4370 |
| | | UDC, superset of 5026 |
----------------------------------------------------------------------------------------------
| x-IBM939 | Cp939 | Japanese Latin Kanji mixed with 4370 |
| | | UDC, superset of 5035 |
----------------------------------------------------------------------------------------------
| x-IBM942 | Cp942 | IBM OS/2 Japanese, superset of Cp932 |
----------------------------------------------------------------------------------------------
| x-IBM943 | Cp943 | IBM OS/2 Japanese, superset of Cp932 |
| | | and Shift-JIS |
----------------------------------------------------------------------------------------------
资源Link:
严格来说,这些是不同的角色。第一个 P
是 Unicode 中的 Fullwidth Latin Capital Letter P
,来自日语 JIS X 0208 字符集 (U+FF30)。第二个 P
是来自 ASCII (U+0050) 的 Latin Capital Letter 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 格式编码的文件中读取一个字节数组,但是获取的字符串中字符的 "style" 看起来与普通字符串不同(更宽?)。
这是我对 "P" 字母的意思的示例:
P - P
如您所见,Shift-JIS 中的第一个看起来与第二个不同。有没有办法对 Shift-JIS 字符串使用 "normal" 个字符?
我正在使用这段代码来执行转换:
String jis = new String(byteArray, Charset.forName("Shift_JIS"));
下表显示了 J2SE 5.0 支持的 Japanese
编码集。新的 java.nio API 使用的规范名称在许多情况下与 java.io 和 java.lang API 中使用的规范名称不同。您可以使用其他日文字体。
----------------------------------------------------------------------------------------------
|Canonical Name for | Canonical Name for java.io | Description |
| java.nio API | and java.lang API | |
----------------------------------------------------------------------------------------------
| EUC-JP | EUC_JP | JISX 0201, 0208 and 0212, EUC encoding |
| | | Japanese |
----------------------------------------------------------------------------------------------
| ISO-2022-JP | ISO2022JP | JIS X 0201, 0208, in ISO 2022 form, |
| | | Japanese |
----------------------------------------------------------------------------------------------
| Shift_JIS | SJIS | Shift-JIS, Japanese |
----------------------------------------------------------------------------------------------
| windows-31j | MS932 | Windows Japanese |
----------------------------------------------------------------------------------------------
| x-euc-jp-linux | EUC_JP_LINUX | JISX 0201, 0208, EUC encoding Japanese |
----------------------------------------------------------------------------------------------
| x-eucJP-Open | EUC_JP_Solaris | JISX 0201, 0208, 0212, EUC encoding |
| | | Japanese |
----------------------------------------------------------------------------------------------
| x-IBM33722 | Cp33722 | IBM-eucJP - Japanese (superset of 5050) |
----------------------------------------------------------------------------------------------
| x-IBM930 | Cp930 | Japanese Katakana-Kanji mixed with 4370 |
| | | UDC, superset of 5026 |
----------------------------------------------------------------------------------------------
| x-IBM939 | Cp939 | Japanese Latin Kanji mixed with 4370 |
| | | UDC, superset of 5035 |
----------------------------------------------------------------------------------------------
| x-IBM942 | Cp942 | IBM OS/2 Japanese, superset of Cp932 |
----------------------------------------------------------------------------------------------
| x-IBM943 | Cp943 | IBM OS/2 Japanese, superset of Cp932 |
| | | and Shift-JIS |
----------------------------------------------------------------------------------------------
资源Link:
严格来说,这些是不同的角色。第一个 P
是 Unicode 中的 Fullwidth Latin Capital Letter P
,来自日语 JIS X 0208 字符集 (U+FF30)。第二个 P
是来自 ASCII (U+0050) 的 Latin Capital Letter P
。
因此,您必须将全角字符转换为半角字符。您可以使用 ICU4J 的 Transliterator.
Transliterator transliterator = Transliterator.getInstance("Halfwidth-Fullwidth");
String result = transliterator.transliterate("P - P");
System.out.println(result); // You will get "P - P"