编码从JIS X 208到UNICODE的转换

时间:2009-11-22 12:49:15

标签: c++ unicode

如何在JIS C ++中将JIS X 208编码的字符串转换为UNICODE? VC ++特定的答案会有所帮助。

我发现难以理解的更大问题是日语字符的编码太多了。 JIS本身有很多版本,然后是Shift-JIS。如果有人能指出用英语对这些进行很好的解释,那将是很好的。

我浏览了code page identifiers in MSDN。这列出了日语(JIS 0208-1990和0121-1990),但我想知道JIS 0208和JIS X 0208之间的区别。

4 个答案:

答案 0 :(得分:1)

ICU项目包含许多用于从Unicode转换和转换为Unicode的函数。它适用于大多数操作系统,包括Windows。它将处理来自/几乎所有代码页的转换。

从我所看到的,JIS X 0208和JIS 0208似乎是同一个名称的2个变体,即实际的代码页是相同的。

Here's关于JIS 0208的维基百科文章,希望它能回答你的一些问题,因为它更深入地介绍了JIS的历史,它的版本不同

答案 1 :(得分:1)

JIS X 0208似乎已过时并被JIS X 0213取代。

Shift JIS是JIS X的编码,即将16位字符代码转换为8位表示的算法。

我发现从JIS到Unicode的这个mapping table和从JIS X 0208到Unicode的这个C converter

希望这有帮助。

答案 2 :(得分:1)

“JIS X 0208”是字符集规范的名称(即,它定义了具有字符编号的字符的抽象形状)。 规范。没有定义如何编码(即字节数组表示)字符。 (JIS X 0208有三种主要编码; ISO-2022-JP,EUC-JP和Shift_JIS。)

因此“JIS X 0208编码字符串”含糊不清。 如果您的意思是“CP932(最常用的Shift_JIS变体)编码字符串”,您可以使用MultiByteToUnicode()Win32API和CP932作为第一个参数。

JIS 0208和JIS X 0208可以相同(后者是规范的正确名称)。

MSDN中的

“0121-1990”必须是“0212-1990”的拼写错误。它也是一个字符集规范,包含很少使用的(汉字)字符。

答案 3 :(得分:0)

X指的是type of standard。所有JIS标准都有一些分类,因此“JIS 0208”实际上只是用作“JIS X 0208”的缩写。