整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

html乱码-解决gb2312编码导致乱码问题

几天保存了网络上的一个页面,浏览器打开后,发现是乱码。如下图:

乱码网页

出现这个问题怎么处理呢?下面帮你解决

页面html源码

查看html,看到这里用了国标标准,看源码截图

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

解决方法:

把gb2312改成utf-8即可

修改为utf-8

修改后的结果,如图:

修改后的展示

知识分享:

utf-8 和gb3212 的区别

utf-8 这个是国际通用字库,支持各种不同的语言

gb3212这个是中国的字库,支持简体中文和少数外语+一些符号,文件资源少一点

区别:utf-8跨平台兼容性更好,由于它字库更全所以加载会慢好多

html的charset属性

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")

告诉浏览器以什么样的格式对响应的数据进行解析

指定了响应数据的格式类型

其值有两部分

  • text/html:响应的数据是一个HTML文本
  • charset=utf-8:响应的数据的字符集是UTF-8的

2.请求乱码

在获取请求的时候出现了乱码

不同的请求数据的解析方式不同

即乱码的处理方式也不同

  • post请求

数据的传递是通过请求体进行传递的

数据的解析是由开发人员在后台进行解析的

解决方案

在后台解析数据时指定解析编码

告诉服务器,以什么样的编码对请求中的数据进行解析

request..setCharacterEncoding("指定编码")
  • get请求

所有的解析是直接由服务器进行操作的,其默认字符集为: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"/>

3.页面乱码

页面乱码分为两种情况

  • HTML页面乱码<meta charset="指定编码"/>
  • JSP页面乱码:在JSP的page指令中指定响应格式
<%@ page contentType="text/html;charset=UTF-8" %>

4.JDBC乱码

在实现JDBC操作的时候,也存在乱码问题

需要指定当前操作的模式

 ?useUnicode=true&characterEncoding=utf-8

在某些引用中,需要指定对应的时区

例如:在SpringBoot中操作JDBC出现乱码时

需要指定时区

?characterEncoding=utf-8&serverTimezone=UTC

5.数据库乱码

在创建数据库的时候,需要指定当前所使用的编码

在数据库执行的时候,字符集中不能带有-

例如:UTF-8必须简写为UTF8

 engine=Innodb default charset=UTF8