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
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 **
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