2012-12-17 217 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庫進行轉換。