用于编码转换的 Iconv 库有什么好的替代方案吗?

发布于 2024-07-19 10:42:37 字数 241 浏览 12 评论 0 原文

我在 Ruby 上使用 Iconv 库将编码从 UTF-8 转换为 UTF-32、UTF-16 等,效果非常好。

但是,在从 Big5 转换为 UTF-8 时,我确实看到了一个问题——无效序列会引发异常……

而当从 CP950 转换为 UTF-8 时,问题就消失了,其中 CP950 本质上是 Big5。 ..

所以我想知道除了使用 Iconv 之外是否还有其他好的选择? 或者说CP950是Big5的更好版本?

i was using Iconv library on Ruby to convert encoding from UTF-8 to UTF-32, UTF-16 etc and it was quite good.

However, I do see an issue when converting from Big5 to UTF-8 -- an exception is thrown for invalid sequence...

and the problem goes away when it is converting from CP950 to UTF-8, of which CP950 is essentially Big5...

so I wonder if there is another good alternative besides using Iconv? Or is the CP950 a better version of Big5?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

离不开的别离 2024-07-26 10:42:37

看看 ICU,它是一个可以进行字符转换等操作的库。

另一方面,其他答案表明您可能需要更仔细地检查您的编码。

Have a look at ICU, it's a library that does character conversions among other things.

On the other hand, the other answers suggest you might need to examine your encodings more carefully.

挽清梦 2024-07-26 10:42:37

尽管Big5和CP950几乎相同,但还是有区别。 在 Unicode 网站上有用于将不同编码转换为 Unicode 的参考文件,您将看到 Big5CP950 不同。 我对 Iconv 的体验很好 - 我怀疑它的行为可能是正确的。

在 CP950 中找到但 Big5 中没有的一些字符具有十六进制值:0x00、0x01、0x02、0x03、0x04、0x05、0x06、0x07、0x08、0x09、0x0A、0x0B、0x0C、0x0D、0x0E、0x0F、 0x10、0x11、0x12、0x13、0x14、0x15、0x16、0x17、0x18、0x19、0x1A、0x1B、0x1C、0x1D、0x1E、0x1F、0x20、0x21、0x22、0x23、 24、0x25、0x26、0x27、0x28、 0x29、0x2A、0x2B、0x2C、0x2D、0x2E、0x2F、0x30、0x31、0x32、0x33、0x34、0x35、0x36、0x37、0x38、0x39、0x3A、0x3B、0x3C、 3D、0x3E、0x3F、0x40、0x41、 0x42、0x43、0x44、0x45、0x46、0x47、0x48、0x49、0x4A、0x4B、0x4C、0x4D、0x4E、0x4F、0x50、0x51、0x52、0x53、0x54、0x55、 56、0x57、0x58、0x59、0x5A、 0x5B、0x5C、0x5D、0x5E、0x5F、0x60、0x61、0x62、0x63、0x64、0x65、0x66、0x67、0x68、0x69、0x6A、0x6B、0x6C、0x6D、0x6E、 6F、0x70、0x71、0x72、0x73、 0x74、0x75、0x76、0x77、0x78、0x79、0x7A、0x7B、0x7C、0x7D、0x7E、0x7F、0x80、0x81、0x82、0x83、0x84、0x85、0x86、0x87、 88、0x89、0x8A、0x8B、0x8C、 0x8D、0x8E、0x8F、0x90、0x91、0x92、0x93、0x94、0x95、0x96、0x97、0x98、0x99、0x9A、0x9B、0x9C、0x9D、0x9E、0x9F、0xA0、 A1、0xA15A、0xA1C3、0xA1C5、0xA1FE、 0xA240、0xA3E1、0xA2CC、0xA2CE。 如果您的任何输入包含这些值,则该文件不是有效的 Big5。

Although Big5 and CP950 are almost the same there are differences. On the Unicode website there are reference files for converting different encodings to Unicode, you will see that Big5 and CP950 are different. My experience of Iconv has been good - I suspect its behavior may be correct.

Some of the characters found in CP950 but not Big5 have the hex values: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA15A, 0xA1C3, 0xA1C5, 0xA1FE, 0xA240, 0xA3E1, 0xA2CC, 0xA2CE. If any of your input contains these values, then the file is not valid Big5.

滥情空心 2024-07-26 10:42:37

big5 有很多变体。 CP950只是其中之一。
http://www.moztw.org/docs/big5/

对于big5,我会建议使用“big5-2003”,这是官方更新版本。

There are many many big5 variants. CP950 is just one of them.
http://www.moztw.org/docs/big5/

For big5, I would suggest use "big5-2003", which is official updated version.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文