幾天保存了網絡上的一個頁面,瀏覽器打開后,發現是亂碼。如下圖:
亂碼網頁
出現這個問題怎么處理呢?下面幫你解決
頁面html源碼
查看html,看到這里用了國標標準,看源碼截圖
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
解決方法:
把gb2312改成utf-8即可
修改為utf-8
修改后的結果,如圖:
修改后的展示
utf-8 這個是國際通用字庫,支持各種不同的語言
gb3212這個是中國的字庫,支持簡體中文和少數外語+一些符號,文件資源少一點
區別:utf-8跨平臺兼容性更好,由于它字庫更全所以加載會慢好多
charset屬性是定義HTML文檔的字符編碼格式。
常見的字符編碼有:Unicode、utf-8、gbk、gb2312
其中:
gbk是國家標準的擴展版(增加了繁體并包含所有亞洲字符集)
Unicode是國際組織制定的旨在容納全球所有字符的編碼方案,包括字符集、編碼方案等。又稱為萬國碼、統一碼、單一碼
融界2024年1月16日消息,據國家知識產權局公告,中信銀行股份有限公司申請一項名為“一種基于iText的支持生僻字轉換方法及系統”的專利,公開號CN117408230A,申請日期為2023年10月。
專利摘要顯示,本發明提供了一種基于iText的支持生僻字轉換方法及系統,涉及人工智能技術領域。其中,所述方法包括:獲得生僻字字庫;獲得常規字字庫;將所述生僻字字庫與所述常規字字庫進行組合,獲得字庫集合;根據所述字庫集合對HTML進行字體樣式設定,獲得HTML信息;將所述字庫集合設置到iText中,調用所述iText對所述HTML信息進行PDF轉換,獲得轉換文件。解決了現有技術中存在遇到生成含有生僻字的HTML轉換PDF場景時,無法正常完成生僻字轉換,出現生僻字變為亂碼,且使用升級現有中文字字庫的方法不能隨時新增生僻字,靈活性差的技術問題。
本文源自金融界
響應回來的數據存在中文亂碼問題
解決方案
可以設置響應數據的格式
response.setContentType("text/html;charset=utf-8")
告訴瀏覽器以什么樣的格式對響應的數據進行解析
指定了響應數據的格式類型
其值有兩部分
在獲取請求的時候出現了亂碼
不同的請求數據的解析方式不同
即亂碼的處理方式也不同
數據的傳遞是通過請求體進行傳遞的
數據的解析是由開發人員在后臺進行解析的
解決方案
在后臺解析數據時指定解析編碼
告訴服務器,以什么樣的編碼對請求中的數據進行解析
request..setCharacterEncoding("指定編碼")
所有的解析是直接由服務器進行操作的,其默認字符集為:ISO-8859-1
其解決方案有兩種
方式一:
字符集的轉換
將ISO-8859-1的字符串轉換成指定編碼的字符串
假設需要轉換的變量為name
name = new String(name.getBytes("ISO8859-1"),"UTF-8");
此時轉換成功,但是該方式需要對每一個字符串都進行轉換
相對比較麻煩
方式二
更改服務器默認字符集
將默認的ISO-8859-1改為我們想要的編碼
打開tomcat安裝目錄下的conf目錄中的server.xml文件
找到端口號配置的位置
在端口號配置的標簽的屬性部分新增一個屬性
URIEncoding="指定編碼"
屬性名大小寫敏感
表示指定當前服務器所使用的字符集
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
頁面亂碼分為兩種情況
<%@ page contentType="text/html;charset=UTF-8" %>
在實現JDBC操作的時候,也存在亂碼問題
需要指定當前操作的模式
?useUnicode=true&characterEncoding=utf-8
在某些引用中,需要指定對應的時區
例如:在SpringBoot中操作JDBC出現亂碼時
需要指定時區
?characterEncoding=utf-8&serverTimezone=UTC
在創建數據庫的時候,需要指定當前所使用的編碼
在數據庫執行的時候,字符集中不能帶有-
例如:UTF-8必須簡寫為UTF8
engine=Innodb default charset=UTF8
*請認真填寫需求信息,我們會在24小時內與您取得聯系。