mysql数据中包含不间断空格(ascii值为194和160)解决办法
生活随笔
收集整理的這篇文章主要介紹了
mysql数据中包含不间断空格(ascii值为194和160)解决办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
mysql數據中包含不間斷空格(ascii值為194和160)解決辦法
問題
mysql數據存在這個不間斷空格,導致前端顯示亂碼。
起因
字符串中的一個空格(ASCII:32)被UTF-8編碼之后變成了字符(ASCII:194 和 160的組合)。在 UTF-8編碼里面存在一個特殊的字符,其編碼是“0xC2 0xA0”,轉換成字符的時候表現為一個半角空格,跟一般的半角空格(ASCII 0x20)不同的是它的寬度不會被壓縮,所以排版中常能用到它。但是GB2312、Unicode之類并沒有這樣的字符,所以轉換后前臺會顯示為“?” 號,只是顯示為問號而不是真正的問號,所以無法被替換。
解決
mysql處理
通過mysql的 REPLACE(object,‘old’,‘new’) 函數處理,因為他是194和160的組合,所以需要嵌套調用。
select REPLACE(REPLACE('9591430 ',char(194),''),char(160),'')java處理
通過byte[]處理
String s = "123 ";byte[] bytes = new byte[]{(byte) 0xc2, (byte) 0xa0};String c = new String(bytes);System.out.println(s.replace(c, "").length());起因借鑒自
https://blog.csdn.net/arthur503/article/details/49158569
總結
以上是生活随笔為你收集整理的mysql数据中包含不间断空格(ascii值为194和160)解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Ubuntu 20.04 LTS】如何
- 下一篇: EtherCAT和Ethernet的不同