代码之家  ›  专栏  ›  技术社区  ›  Shailesh Kumar

从JIS x 208到Unicode的编码转换

  •  1
  • Shailesh Kumar  · 技术社区  · 15 年前

    如何将JIS X 208编码的字符串转换成C++中的Unicode?一个VC++特定的答案会很有帮助。

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

    我看穿了 code page identifiers in MSDN . 这确实列出了日语(JIS 0208-1990和0121-1990),但我想知道JIS 0208和JIS X 0208之间有什么区别。

    4 回复  |  直到 15 年前
        1
  •  1
  •   Glen    15 年前

    这个 ICU 项目包含许多用于从和转换为Unicode的函数。它可以在大多数操作系统上工作,包括Windows。它将处理几乎所有代码页之间的转换。

    据我所见,jis x 0208和jis 0208似乎是同一事物名称的两种变体,即实际代码页是相同的。

    Here's 维基百科上关于jis 0208的文章,希望它能回答你的一些问题,因为它能深入了解jis的历史和不同版本。

        2
  •  1
  •   devio    15 年前

    JIS X 0208 似乎过时了,被取代了 JIS X 0213 .

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

    我发现了这个 mapping table 从jis到unicode还有这个 C converter 从JIS X 0208到Unicode。

    希望这有帮助。

        3
  •  1
  •   habe    15 年前

    __jis x 0208__是字符集规范的名称(即,它用字符编号定义字符的抽象形状)。 规范没有定义如何对字符进行编码(即字节数组表示)。 (日本工业标准X0208有三个主要编码:ISO-2022-JP、EUC-JP和SHIFT-JIS。)

    因此,__jis x 0208编码字符串__不明确。 如果您是指__CP932(这是shift_-jis最广泛使用的变体)编码字符串_,您可以使用带CP932的multiByteToUnicode()win32api作为第一个参数。

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

    __0121-1990_在msdn中必须是__0212-1990__的打字错误。它也是一个字符集规范,包含很少使用的(汉字-)字符。

        4
  •  0
  •   Michael Madsen    15 年前

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