Redis出現(xiàn)中文亂碼的問題及解決
今天測試一個小功能,用redis做了個緩存,然后啟動redis客戶端進行查詢,發(fā)現(xiàn)得不到想要的中文結(jié)果。
網(wǎng)上查找相關(guān)的解決方案,卻沒有一個能完整解決問題的,最后自己一步一個腳印解決了。
1. 問題的產(chǎn)生
(1)將接口返回數(shù)據(jù)寫入redis,設(shè)置key為“data”

(2)找到redis安裝目錄中的redis-server.exe,雙擊啟動

(3)在redis-server.exe這個文件的這一層地址欄,輸入cmd,打開控制臺,然后輸入redis-cli并回車,接著PING一下連通性,可以看到客戶端是沒有問題的

(4)根據(jù)緩存的key,輸入查詢語句get data,查詢一下緩存數(shù)據(jù)。可以看到,能查到數(shù)據(jù),但是沒有想要的中文出現(xiàn)。

2. 問題的解決
很明顯,前面出現(xiàn)的問題,并不是中文亂碼問題(因為連中文的痕跡都沒有看到),而是數(shù)據(jù)的進制問題。
redis數(shù)據(jù)進制問題的解決
要解決數(shù)據(jù)進制問題,只需要在前面的(3)中,將redis-cli改為redis-cli --raw輸入進去即可,這也是很多網(wǎng)上的解決方案,我們可以看下這么解決的結(jié)果。

好,解決了一個數(shù)據(jù)進制問題,真正出現(xiàn)了我們所說的中文亂碼問題。這個問題實際上不屬于Redis的問題,而是編碼問題。這也是為什么搜Redis中文亂碼問題,總得不到解決方案的原因。
中文亂碼問題解決
這個問題是因為寫java文件時用的是UTF-8的編碼格式,而Windows控制臺對于中文,是GBK的編碼格式,兩者不一致導致。
查看java文件編碼格式

右鍵Windows控制臺—>屬性,查看編碼格式

亂碼問題,只要保持兩者編碼格式一致,該問題便可迎刃而解。
還是從前面的(3)入手,cmd打開控制臺后,先輸入chcp 65001,修改控制臺的編碼格式為UTF-8,然后再輸入redis-cli --raw,后面正常查詢,就能得到想要的中文結(jié)果了。
- 修改編碼格式


輸入redis-cli --raw,并做后面的查詢

總結(jié)
Redis中文亂碼問題的解決:
(1)先通過chcp 65001命令修改控制臺的編碼格式
(2)再通過redis-cli --raw命令解決數(shù)據(jù)進制問題,最后再做查詢就能得到正常的結(jié)果。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Redis Sorted Set 跳表的實現(xiàn)示例
本文詳細解析了Redis中SortedSet跳表的實現(xiàn)原理,闡述了跳表的基本概念、結(jié)構(gòu)及其在SortedSet中的應用,同時也指出了跳表在實際使用中的優(yōu)勢和局限,可以更好地運用Redis的SortedSet,優(yōu)化高并發(fā)環(huán)境中的數(shù)據(jù)查詢與操作,感興趣的可以了解一下2024-10-10
Redis 如何批量設(shè)置過期時間(PIPLINE的使用)
有時候我們并不希望redis的key一直存在。例如緩存,驗證碼等數(shù)據(jù),我們希望它們能在一定時間內(nèi)自動的被銷毀。本文就詳細的介紹一下Redis 如何批量設(shè)置過期時間,感興趣的可以了解一下2021-11-11

