2017-09-24 283 views
0

我使用UTF-8編碼,這有一定的中國,日本或坎納達我能夠成功地顯示在屏幕(HTML)頁面的語言,但我想生成PDF我只看到英語解析XML ...如何將UTF-8字符串轉換爲日語或任何其他語言IText PDF?

我碰到的字體,但擔心像有每個語言字體(如果我錯了抱歉)。

在調試模式下,我能夠看到中國的變化和其他語言時,它被轉換爲UTF-8我看到?????????。

      new String(myString.getBytes(Charset.forName("ISO-8859-1")), 
            Charset.forName("UTF-8")) 

請幫忙顯示iText的PDF任何語言

注:我使用的解析XML UTF-8,當我從數據庫獲取,而無需使用UTF或任何我能打印excel ...在PDF中我認爲我應該使用字體。

+0

這聽起來像你還沒有充分調試過這個問題。例如,你爲什麼試圖通過設置編碼來解決「顯示unicode字符」,而不是確保PDF生成代碼設置正確的字體堆棧?如果沒有代碼顯示你現在正在嘗試什麼,作爲一個[mcve],我們不知道你實際上做了什麼錯誤,而你的描述並沒有給我們提供足夠的信息讓我們繼續。請給出[如何提出一個好問題](/ help/how-to-ask)快速重讀並相應地調整你的帖子。 –

+0

無論XML文檔的編碼是什麼(只要你用該編碼讀取文檔); XML文檔中的所有文本值都使用Unicode。 (一個庫可能會比定製的實現更好。) –

+0

這是Java,不是嗎?請[編輯]添加標籤。 Java字符串也是Unicode(UTF-16)。您的代碼是從Java字符串(UTF-16)到ISO 8859-1的有損轉換,隨後是UTF-8的數據破壞轉換,最後再次以Java字符串(UTF-16)結尾。 –

回答

1

UTF-8能夠代表所有語言的文本。 ISO-8859-1只能用英語表示文本,而在少數歐洲語言中則能表示大多數文本。

如果你將文本轉換爲ISO-8859-1,然後把它作爲UTF-8,你是打破了在不通過ISO-8859-1的有限子集支持其他語言的文本支持。保持Unicode格式(例如UTF-8)。

正如在評論中提到的,Java字符串在內部與Unicode兼容(它們在內部使用UTF-16),所以不需要進行任何轉換,即使對於UTF-8,也完全支持所有語言。如果您需要這樣做,您只需要進行轉換,無論您用於導出爲PDF的任何內容,但似乎並未指定具體內容。

+0

感謝您的幫助......我明白了您的觀點我能夠在Excel報告中打印語言......無需使用UTF-8或任何其他任何東西即可獲取數據和打印......但PDF Itext不顯示這些文本(日語以及所有)..遇到使用IText中的字體 –

+0

@GopiLal *「但PDF Itext不顯示這些文本」* - 那麼只需顯示iText使用的關鍵代碼,這樣人們就可以分析它並告訴你你做錯了什麼。 – mkl

相關問題