[JAVA] Problème de conversion MS932 CP943C

Lors de la conversion de caractères Shift_JIS en Unicode, des problèmes peuvent survenir si le codage des caractères (= table de conversion) est différent.

Shift_JIS Shift_JIS stipule que "a" est représenté par "0x82A0", "i" est représenté par "0x82A2" et "u" est représenté par "0x82A4". Vous pouvez le vérifier en écrivant "Ai" dans le fichier texte Shift_JIS et en l'ouvrant avec un éditeur binaire.

Un 0x82A0 (Shift_JIS) 0x82A2 (Shift_JIS) 0x02A4 (Shift_JIS)

Figure. Ouverture d'un fichier texte Shift_JIS avec un éditeur binaire image.png

Shift_JIS-> Conversion Unicode (MS932)

Puisque Shift_JIS et Unicode ont des affectations différentes de caractères ("A" dans l'exemple ci-dessus) et de codes ("0x82A0" dans l'exemple ci-dessus), les règles de conversion (codage de caractères) sont déterminées. En utilisant MS932, qui est le codage de caractères standard dans Windows Java, Shift_JIS "Ai" est converti comme suit.

Un résultat de conversion 0x82A0 (Shift_JIS) -> U + 3042 (Unicode) MS932 0x82A2 (Shift_JIS) -> U + 3044 (Unicode) MS932 résultat de la conversion 0x02A4 (Shift_JIS) -> U + 3046 (Unicode) Résultat de la conversion avec MS932

Le résultat de la conversion avec MS932 peut également être confirmé à l'aide de l'outil Java native2ascii.

native2ascii -encoding MS932 sjis_abc.txt \u3042\u3044\u3046

Non seulement MS932C mais aussi Cp943C est un encodage de caractères souvent utilisé dans les chaînes de caractères japonais. Le résultat est le même même si "Ai" est converti en Unicode en utilisant Cp943C.

Un résultat de conversion 0x82A0 (Shift_JIS) -> U + 3042 (Unicode) Cp943C 0x82A2 (Shift_JIS) -> U + 3044 (Unicode) Résultat de la conversion Cp943C U 0x02A4 (Shift_JIS) -> U + 3046 (Unicode) Résultat de la conversion Cp943C

Même native2ascii est comme suit.

native2ascii -encoding Cp943C sjis_abc.txt \u3042\u3044\u3046

Cependant, certains personnages

- 0x817C (Shift_JIS) ― 0x815C (Shift_JIS) ~ 0x8160 (Shift_JIS) ∥ 0x8161 (Shift_JIS) ¦ 0xFA55 (Shift_JIS)

Lorsqu'ils sont convertis en Unicode dans MS932 et CP943C, les caractères Unicode attribués sont différents. ** Spécifications d'encodage, pas de bugs ** image.png

Le tableau est le suivant.

lettre Shift_JIS Résultat de la conversion avec MS932 Résultat de la conversion avec Cp943C
0x817C u+FF0D u+2212
0x815C u+2015 u+2014
0x8160 u+FF5E u+301C
0x8161 u+2225 u+2016
0xFA55 u+FFE4 u+00A6

Voici les résultats avec native2ascii.

native2ascii -encoding MS932 sjis.txt \uff0d\u2015\uff5e\u2225\uffe4

native2ascii -encoding Cp943C sjis.txt \u2212\u2014\u301c\u2016\u00a6


Ceci est un article réimprimé à partir du lien ci-dessous. https://sites.google.com/site/myitmemo/java-kanren/unicode/ms932-vs-cp943c

Recommended Posts

Problème de conversion MS932 CP943C