mysql 驅動 亂碼 Max s Blog

2021-10-18 21:09:59 字數 848 閱讀 8941

由於以前偷懶的原因,很多資料庫都是使用latin1作為字元編碼,這樣可以原樣保留資料的位元組流,但是最近發現新版的mysql驅動,包括345各版本的最新驅動,用characterencoding=latin1 引數去訪問資料,都會出現問號亂碼的問題。

在網上查了一下,有人說是驅動裡面自帶強制轉換,所以出了問題,根據提示看了一下**,果然在

resultsetrow在getstring的時候,會使用 singlebytecharsetconverter 來強制轉碼,發生了問題。

網上說要修改驅動,我自己嘗試了一下,既然強制轉碼裡面選擇了使用cp1252,那這個字符集應該也是單字元全集,所以我直接嘗試用該字符集來連線,問題就解決了。。。。

有兩種解決方案:

1. 使用resultset中的getbytes方法,直接獲取原始bytes陣列,自己按照錄入時候的編碼new string即可。

2. 如果用了框架結構,寫了必須獲取string的,那麼連線引數可以寫

characterencoding=cp1252

程式使用的時候

rs.getstring(1).getbytes(「cp1252」)

即可獲取原始位元組陣列,然後也是按照錄入編碼進行 new string 即可。

注意這種方法可能會引起問題,由於cp1252對一些位元組的處理並不是我們理解的那樣,比如

mysql translates 0x81 to unicode 0x0081, 0x8d to 0x008d, 0x8f to 0x008f, 0x90 to 0x0090, and 0x9d to 0x009d.

如果漢字裡面剛好有著3中位元組的,就會出問題,顯示問號。。。

估計也是沒人理會的了,呵呵,就當練練英文。

Tomcat啟動亂碼

處理方式 開啟tomcat目錄下conf子目錄,找到logging.properties 修改logging.properties中的引數 j a.util.logging.consolehandler.encoding gbk 重啟就解決了 28 feb 2020 23 19 24.048 資訊 ...

Tomcat 啟動亂碼設定

tomcat 伺服器亂碼的問題簡直了。亂碼引起的問題各種各樣,每個問題解決的關鍵點的不一樣。這裡記錄下自己今天遇見的亂碼 首先吐槽亂碼引起的問題 訪問中文名稱的靜態資源訪問不到,簡直要 了。解決辦法是修改tomcat 配置。具體是 啟動時候控制台亂碼問題。這個問題也是,以前以為是工具的原因,但是從e...

mysql 空格亂碼 MySQL 中文亂碼(全)

避免中文亂碼的完整流程 建庫時,指定字符集和排序規則 create database company character set utf8 collate utf8 general ci 建表時,指定字符集 create table employee id bigint 20 not null au...