如何将UTF8转换为ISO-8859-7?

3
我有一份旧的C代码,用于文本处理。所有规则和数据都编码为ISO-8859-7。现在,我正在尝试将其移植到Android。我已经构建了适当的JNI函数,使用GetStringUTFChars()。这个const char*似乎是UTF-8编码的。因此,我需要将其转换为ISO。
在Windows中,我有一个函数可以将utf-8(const char*)转换为wchar_t,然后我使用wcstombs()将其转换为ISO。但是,在Android下,这种方法不起作用,我还读到wchar_t不安全。
那么,我该如何进行此转换?
谢谢

1
为什么wcstombs无法正常工作? - David Heffernan
@DavidHeffernan ISO-8859-7是一个多字节字符串,但是 wcstombs 看起来似乎期望的是宽字符。 - simonc
在Android上查看iconv库是否可用 - Dmytro Sirenko
@simonc 我的观点是wcstombs在任何地方都是相同的。也许问题在于Android上没有可用的utf8-> utf16部分。但我认为我想使用一个可以在单个步骤中完成转换的转换库。因此,iconv将是一个不错的选择。 - David Heffernan
iconv在我的应用程序中似乎太复杂了(编译和)使用。最简单的解决方案是实现一个查找表。感谢您的回复。 - Tsiftis Karampouzouklis
1个回答

1

如何从UTF-8转换为ISO-8859-7。 首先将UTF-8转换为本地Unicode,然后再将本地Unicode转换为ISO-8859-7。但是,UTF-8可能允许来自几乎所有现代脚本的超过60000个代码点,而ISO-8859-7仅允许256个。因此,您应该注意数据丢失,并尽可能保持数据在Unicode / UTF-8中。

目前,如果可用,您可以使用任何Android特定API(我知道有一个iconv-android API),或者使用GNU C libiconv库进行转换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接