簡體   English   中英

在Java中將非英語字符串轉換為普通字符串

[英]Convert non english string to normal String in Java

我需要根據某些基准來驗證某些文本。

例如:

String a="La Panthère"; 
String b="La Panthère";

我知道字符串b包含HTML文字,因此我正在使用Apache StringEscapeUtils ,它給了我

String b="La Panthère";
b=StringEscapeUtils.unescapeHtml(b);

輸出:-LaPanthère

但是我不知道字符串a中存儲了什么。 從SO的某個地方,我知道這可能是上升文字,因此在下面的代碼中進行了嘗試

a=Normalizer.normalize(a, Normalizer.Form.NFKD);

注意:我嘗試了所有形式的Normalizer,但沒有任何效果。

有人可以幫我如何使String a與b相同的方式嗎?

正如Jesper所提到的, è模式通常表示編碼錯誤。

那時,您已經不走運了。

建議不要采取補救措施,例如更換è ,也不安全。

String轉義或標准化超出了范圍,因為問題出在源頭,與HTML轉換或口音規范化無關。

但是,有一些簡單的習慣用法可以將String轉換為不同的編碼。

下面的例子:

  • 模擬Windows-1252 String (在UTF-8環境中)。
  • 然后,它按原樣打印(損壞,因為它是UTF-8打印流中的Windows-1252 String )。
  • 最后,將其打印出來並重新轉換為UTF-8。

     String a = new String( "La Panthère".getBytes(Charset.forName("UTF-8")), Charset.forName("Cp1252") ); System.out.println(a); System.out.println( new String( a.getBytes(Charset.forName("Cp1252")), Charset.forName("UTF-8") ) ); 

產量

La Panthère
La Panthère

筆記

上面描述的轉換習慣用法意味着您知道如何預先對原始String進行編碼。

當以下編碼用於相互解釋文本時,就會發生典型的編碼問題:

  • ISO拉丁語1
  • Windows的1252
  • UTF-8

這里是Java支持的編碼及其規范名稱的列表。

在網絡環境中,通常需要先調用Javascript的encodeURIComponent函數在前端將值編碼,然后再將其發送到后端。

暫無
暫無

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

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