簡體   English   中英

Java中如何處理特殊字符?

[英]How to handle special characters in Java?

我想將用戶在 DB 中給出的注釋保存為 CLOB。 它工作正常。 后來我遇到了特殊字符的問題。 如果用戶復制從寫字板粘貼注釋並且它包含“單引號”或一些特殊字符(它們與通常的有點不同),它們將轉換為反向問號或一些方框 我嘗試使用下面的代碼來處理它們。 在此處輸入圖片說明

values[4] = new String(values[4].getBytes("ISO-8859-1"), "UTF-8");

但我仍然得到方形盒子。 在調試問題后,我意識到它無法處理空格 請看附件圖片

注意:注釋長度為122,僅處理一個空格失敗。 我不知道那個空間有什么問題。

請注意,在 java 中,編碼僅在

  1. 做某種(文件-)IO或
  2. 將字符轉換為字節

Java 的String對象始終編碼為 UTF-16,因此假設valuesString[]您的代碼將執行以下操作:

  1. 將 String values[4]作為一組字符。
  2. 使用 ISO8859-1 編碼將每個字符轉換為一個字節
  3. 使用 UTF8 編碼將這些字節轉換為字符。

例如, £字符將被轉換為字節值A3但該單個字節不能使用 UTF-8 轉換回來,因為它只能是 2 字節序列的一部分。

總結一下:代碼線完全被破壞了,而使用String -objects 則無需考慮任何類型的編碼。 您必須在轉換為字節時處理代碼頁問題,無論是在 I/O 到文件或網絡流期間,還是在轉換為字節數組進行加密時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM