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

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

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

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

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

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

右鍵Windows控制臺(tái)—>屬性,查看編碼格式

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


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

總結(jié)
Redis中文亂碼問題的解決:
(1)先通過chcp 65001命令修改控制臺(tái)的編碼格式
(2)再通過redis-cli --raw命令解決數(shù)據(jù)進(jìn)制問題,最后再做查詢就能得到正常的結(jié)果。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
分布式利器redis及redisson的延遲隊(duì)列實(shí)踐
這篇文章為大家主要介紹了分布式利器redis及redisson的延遲隊(duì)列實(shí)踐,搜遍全網(wǎng)好像還沒有使用redisson的延遲隊(duì)列的,redisson作為一個(gè)分布式利器,這么好用的工具沒人用有點(diǎn)可惜2022-03-03
redis集群主從節(jié)點(diǎn)自動(dòng)切換方式
這篇文章主要介紹了redis集群主從節(jié)點(diǎn)自動(dòng)切換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Redis Sorted Set 跳表的實(shí)現(xiàn)示例
本文詳細(xì)解析了Redis中SortedSet跳表的實(shí)現(xiàn)原理,闡述了跳表的基本概念、結(jié)構(gòu)及其在SortedSet中的應(yīng)用,同時(shí)也指出了跳表在實(shí)際使用中的優(yōu)勢(shì)和局限,可以更好地運(yùn)用Redis的SortedSet,優(yōu)化高并發(fā)環(huán)境中的數(shù)據(jù)查詢與操作,感興趣的可以了解一下2024-10-10
Redis 如何批量設(shè)置過期時(shí)間(PIPLINE的使用)
有時(shí)候我們并不希望redis的key一直存在。例如緩存,驗(yàn)證碼等數(shù)據(jù),我們希望它們能在一定時(shí)間內(nèi)自動(dòng)的被銷毀。本文就詳細(xì)的介紹一下Redis 如何批量設(shè)置過期時(shí)間,感興趣的可以了解一下2021-11-11
Redis中Zset類型常用命令的實(shí)現(xiàn)
Zset是Redis的一種有序集合數(shù)據(jù)類型,Zset通過壓縮列表和跳躍表兩種底層編碼方式支持小數(shù)據(jù)集和大數(shù)據(jù)集,支持多種操作,包括添加、查詢、刪除元素以及集合運(yùn)算等,具有不同的時(shí)間復(fù)雜度,感興趣的可以了解一下2024-10-10

