如何通过javascript将ANSI char ID转换为Unicode char ID?

时间:2012-08-09 11:54:47

标签: javascript unicode keyboard ansi

函数fromCharCode不适用于国际ANSI字符。例如,对于ID为192到223的俄语ANSI(cp-1251)字符,它返回特殊字符。如何解决这个问题?

我认为,需要将ANSI char ID转换为Unicode char ID,然后使用fromCharCode。但是如何将ANSI char ID转换为Unicode char ID(取决于当前的locale / codepage)?

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

考虑到您知道数据编码的代码页,只需设置一个映射对象,其中代码页中的代码是代码,值是正确的Unicode符号或数字代码点,并使用它来转换数据。

mapFromCP1251 = {
   192: 'А',
   193: 'Б',
   194: 'В',
   197: 'Е',
   200: 'И',
   204: 'М',
   207: 'П',
   208: 'Р',
   210: 'Т'
   // etc, I don't feel like typing entire http://en.wikipedia.org/wiki/CP1251 here
}

var string = mapFromCP1251[192] + mapFromCP1251[192] + mapFromCP1251[192] + mapFromCP1251[193] + mapFromCP1251[193] + mapFromCP1251[194]
alert(string) // АААББВ
alert(mapFromCP1251[207]+mapFromCP1251[208]+mapFromCP1251[200]+mapFromCP1251[194]+mapFromCP1251[197]+mapFromCP1251[210]+", "+mapFromCP1251[204]+mapFromCP1251[200]+mapFromCP1251[208]+"!") // Hello, world!

答案 1 :(得分:1)

这是我发现解决此问题的唯一库: https://github.com/Niggler/js-codepage

但需要1.5 MiB。 也许,如果你只需要几个字符集,那就少了。