tft每日頭條

 > 生活

 > 亂碼了怎麼解決

亂碼了怎麼解決

生活 更新时间:2025-01-19 11:23:29

亂碼了怎麼解決(解決中文亂碼問題)1

解決中文亂碼問題1. 字符集

1) 字符(Character)是各種文字和符号的總稱,包括各個國家文字、标點符号、圖形符号、數字等。字符集(Character set)是多個字符的集合。

2) 任何數據在計算機内部實際上都是以二進制的形式保存的,所以我們看得見的字符本質上都是以二進制的形式保存的。而字符集實際上就是看得見的字符和二進制數之間的一張對應表。

2. 編碼與解碼

1) 編碼:将字符轉換為二進制數

'中' → E4B8AD → 1110 0100-1011 1000-1010 1101

2) 解碼:将二進制數轉換為字符

1110 0100-1011 1000-1010 1101 → E4B8AD → '中'

3) 亂碼:編碼與解碼使用的字符集不一緻就會産生亂碼。

如下圖:使用 utf-8 編碼,使用GBK 解碼

亂碼了怎麼解決(解決中文亂碼問題)2

所以,解決亂碼問題的根本方法就是統一編碼和解碼的字符集

3. 在Web應用中統一字符集

1) 請求參數中含有中文

· 請求由浏覽器發送給服務器

· 由浏覽器編碼

· 浏覽器使用HTML頁面指定的字符集編碼,隻需要将HTML頁面的字符集指定為UTF-8即可

· 由服務器解碼

· 默認字符集是IOS-8859-1

· 解決方案

· 對于POST請求:post請求在Servlet中解碼,默認的字符集是ISO-8859-1,不支持中文,所以我們需要修改Servlet的字符集為UTF-8。使用request.setCharacterEncoding("UTF-8");設置request對象使用UTF-8字符集對請求體中的内容進行解碼。但需要注意的是,這個操作一定要在調用getParameter()方法之前進行。

· 對于GET請求:GET請求是在URL地址欄中傳遞請求參數的,它會被Tomcat服務器自動解碼,而Tomcat服務器默認的字符集也是ISO-8859-1,

所以我們需要修改Tomcat服務器的字符集為UTF-8。由于請求參數是包含在請求行内的,無法通過request對象進行設置,所以需要在Server.xml文件中修改Connector标簽,添加URIEncoding="utf-8"屬性。

亂碼了怎麼解決(解決中文亂碼問題)3

在eclipse中的Tomcat鏡像中修改即可生效。但如果将來删除當前Tomcat鏡像,重新關聯Tomcat,則會使設置失效,所以在Tomcat配置文件中最好也進行配置。

2) 服務器響應中含有中文

· 響應由服務器發送給浏覽器

· 由服務器編碼

· 默認使用ISO-8859-1進行編碼

· 由浏覽器解碼

· 默認使用GBK進行解碼

· 解決方案

· 方法1:設置響應頭

response.setHeader("Content-Type","text/html;charset=utf-8");

· 方法2:設置響應的内容類型

response.setContentType("text/html;charset=utf-8");

· 通過這種方式可以在響應頭中告訴浏覽器響應體的編碼方式是UTF-8;同時服務器也會采用該字符集進行編碼

但需要注意的是,兩種方法一定要在response.getWriter()之前進行。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved