2012-12-17 117 views
3

我有遗留的C代码来处理文本。所有的规则和数据都在ISO-8859-7中编码。现在,我正尝试移植到android。我已经建立了相应的JNI功能,即GetStringUTFChars()。这个const char *似乎是UTF-8。所以,我需要转换为ISO。如何将utf8转换为iso-8859-7?

在Windows中,我有一个功能,将utf-8 (const char*)转换为wchar_t,然后我使用wcstombs()转换为ISO。但是,这在Android下不起作用,我还读到wchar_t不安全。

那么,我该如何执行此转换?

谢谢

+1

为什么'wcstombs'不工作? –

+0

@DavidHeffernan ISO-8859-7是一个多字节字符串,但是'wcstombs'看起来像是一个宽字符串。 – simonc

+0

查看'iconv'库是否可用于Android –

回答

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库进行转换。