返回顶部
首页 > 资讯 > 前端开发 > VUE >如何理解WEB开发中的苦大难字符集问题
  • 130
分享到

如何理解WEB开发中的苦大难字符集问题

2024-04-02 19:04:59 130人浏览 泡泡鱼
摘要

本篇文章为大家展示了如何理解web开发中的苦大难字符集问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。记得刚做javaweb开发的时候被这个编码问题搞得晕头转向,

本篇文章为大家展示了如何理解web开发中的苦大难字符集问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

记得刚做javaweb开发的时候被这个编码问题搞得晕头转向,经常稀里糊涂的编码正常了一会编码又乱了。那个时候迫于项目进度大多都是知其然不知其所以然。后来有时间就把整个体系搞了个遍,终于摸通了来龙去脉。

c++的CGI开发时大家喜欢用latin,这个属于字节方式的编码格式,存储Mysql节约空间,而C++也是比较容易控制到byte级别的语言。所以经过框架封装基本也问题不大。

在Java语言中,要涉及修改编码问题的地方还真多。一个地方没有设好就会乱码满天飞。大概总结包括以下这几部分:浏览器、服务器数据库操作系统

浏览器:

如果使用模板语言,html需要设置显示的字符集。这个适用于浏览器判断什么编码显示。

<meta Http-equiv="Content-Type" content="text/html; charset=utf-8" />

扩展,浏览器识别编码的顺序:
1.如果HTTP头部申明了charset,则会使用HTTP头部的,
2.让HTTP头部没有设置,则会去解析meta标签的,
3.如果meta也没有的话,浏览器会根据是否设置了auto detect来进行编码识别,
4.否则会使用本地UI的字符编码。

服务器:
对于jsP等动态语言,需要在jsp头部设置编码格式,J2EE服务器解析这个JSP的时候才会把整个页面编码为UTF-8输出,不然就按照系统默认编码格式ISO-8859-1输出了。JSP设置格式如下:

<%@ page language= "java" contentType = "text/html; charset=UTF-8"       pageEncoding ="UTF-8" %>

大家都知道,JSP对应的就是servlet。servlet的编码对应如下设置:

public void service(httpservletRequest request, HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html;charset=utf-8"); }

还有不要漏掉大家常用的spring工具类,编码转换filter,很实用。在你用struts、spring mvc时这个过滤器帮你转换没有设置的编码过滤。如下设置:

<filter>             <filter-name> Set Character Encoding</filter-name>             <filter-class>                  org.springframework.WEB.filter.CharacterEncodingFilter             </filter-class>             <init-param>                   <param-name> encoding</param-name>                   <param-value> UTF-8</param-value>             </init-param>       </filter>

万一还有乱码怎么办呢?doGet方式的参数传递肯定会有乱码问题。只需要在Tomcat的监听器里设置编码字符集如下(文件一般存储在 /tomcat安装目录/conf/server.xml ):

<Connector port="80" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" URIEncoding="utf-8"   />

大家在开发的时候别忘了java文件本身也是有编码格式的。在类文件右键查看属性。

如何理解WEB开发中的苦大难字符集问题

如果开发时忘记更改文件的编码格式,windows默认是GBK的,后来又要一直到utf8编码的linux怎么办。文件巨多,总不能一个一个去更改吧。其实很简单,只需要在java命令的环境参数设置 -Dfile.encoding=GBK 解决。

编译java代码时,如果使用ant需要在javac里设置编译的字符集。这样打印的log输出到文件或者控制台上就不会乱码了。

<javac debuglevel= "source,lines" source= "1.6"   encoding= "utf-8">

Maven编译时设置的字符集:

< artifactId> maven-compiler-plugin </artifactId >        < version> 2.5 </version >                                  < configuration>            < optimize> true </optimize >            < showDeprecation> false </showDeprecation >            < debuglevel> lines,source </debuglevel >             < source> 1.6 </source >             < target> 1.6 </target >             < encoding> UTF-8 </encoding >             < meminitial> 128m </meminitial >                < maxmem> 768m </maxmem >                                  </ configuration>

sqlmap的sql xml,sping的xml 也是需要设置的,因为涉及到跨平台。 顶上添加:

<!--?xml version="1.0" encoding="UTF-8"?-->

数据库:
这里列出大家用的最多的mysql字符集设置。打开mysql的配置文件( linux 一般在 /etc/my.cnf ,windows在mysql的安装目录 my.ini)。设置如下:

[mysqld] default-character-set = utf8  [ mysql] character_set_server = utf8

jdbc需要设置

jdbc : mysql://192.168.0.237:3306/dzh_db?useUnicode=true&characterEncoding=UTF-8

这些都设置了一般的中文是不会有问题的。

不过最近出现了一个问题很搞怪。以前以为所有的字符只要设置好了所有数据都可以录入数据库,结果有些字符就不行,比如●■★这类型的。后来把这些字符变成字节码,居然不是三位utf8的,我擦,大汗淋漓。后来查询可以通过过滤utf8 特殊字符的方式处理。

public static String Utf2String (byte buf[]) { int len = buf.length ; StringBuffer sb = new StringBuffer(len / 2); for (int i = 0; i &lt; len; i++) {  if (by2int(buf[i]) &lt;= 0x7F) sb.append(( char ) buf[i]); else if (by2int(buf[i]) &lt;= 0xDF &amp;&amp; by2int(buf[i]) &gt;= 0xC0) { int bh = by2int(buf[i] &amp; 0x1F); int bl = by2int(buf[++i] &amp; 0x3F);  bl = by2int(bh &lt;&lt; 6 | bl); bh = by2int(bh &gt;&gt; 2); int c = bh &lt;&lt; 8 | bl; sb.append(( char ) c); } else if (by2int(buf[i]) &lt;= 0xEF &amp;&amp; by2int(buf[i]) &gt;= 0xE0) { int bh = by2int(buf[i] &amp; 0x0F); int bl = by2int(buf[++i] &amp; 0x3F); int bll = by2int(buf[++i] &amp; 0x3F);  bh = by2int(bh &lt;&lt; 4 | bl &gt;&gt; 2); bl = by2int(bl &lt;&lt; 6 | bll);  int c = bh &lt;&lt; 8 | bl; // 空格转换为半角 if (c == 58865) { c = 32; } sb.append(( char ) c);  } } return sb.toString(); }

或者把mysql的字符集改为 utf8mb4 ,记得这个只有mysql55支持哦!

[mysqld] default-character-set =utf8mb4  [ mysql] character_set_server = utf8mb4

操作系统:

windows默认是gbk,一般不需要变动。不过大家又想每个文件都要建立为utf8格式怎么办,不可能我们每个文件建立后都去用属性改变一下?太麻烦!直接在eclipse设置后,同种类型的文件建立都会是utf8格式。

如何理解WEB开发中的苦大难字符集问题

linux,可以有两个地方修改基本就足够了:

vi /etc/sysconfig/i18n

修改

LANG="zh_CN.GB3212" LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"

vi /etc/profile

export LC_ALL="zh_CN.GB2312" export LANG="zh_CN.GB2312"

上述内容就是如何理解WEB开发中的苦大难字符集问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网VUE频道。

--结束END--

本文标题: 如何理解WEB开发中的苦大难字符集问题

本文链接: https://lsjlt.com/news/86309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解WEB开发中的苦大难字符集问题
    本篇文章为大家展示了如何理解WEB开发中的苦大难字符集问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。记得刚做javaweb开发的时候被这个编码问题搞得晕头转向,...
    99+
    2024-04-02
  • C#开发中如何处理大数据集的操作问题
    C#开发中如何处理大数据集的操作问题,需要具体代码示例摘要:在现代软件开发中,大数据已成为一种常见的数据处理形式。如何高效地处理大数据集是一个重要的问题。本文将介绍C#中处理大数据集的一些常见问题和解决方法,并提供具体的代码示例。数据集拆分...
    99+
    2023-10-22
    大数据集操作 C#处理大数据 数据集处理技巧
  • 如何理解移动web开发过程中的点透问题
    本篇文章为大家展示了如何理解移动web开发过程中的点透问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先说说故事发生的场景,举个栗子如下图:A是遮罩层,B是正常的...
    99+
    2024-04-02
  • Linux下mysql字符集问题如何处理
    小编给大家分享一下Linux下mysql字符集问题如何处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!4.1之前的 MySQL...
    99+
    2024-04-02
  • 如何解决MySQL字符集编码问题
    这篇文章给大家分享的是有关如何解决MySQL字符集编码问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。项目中,用中断命令导入sql脚本,发现其报出编码错误,后来进过一番分析查询...
    99+
    2024-04-02
  • PHP开发中如何调试和解决编码和字符问题
    在PHP开发过程中,编码和字符问题是常见的挑战之一。当我们遇到乱码、字符截断或者非预期字符输出等问题时,我们需要快速定位并修复这些问题。本文将介绍一些调试和解决编码和字符问题的常用方法,并提供具体的代码示例。使用header()函数设置网页...
    99+
    2023-10-21
    调试 编码问题 字符问题
  • 【必读】VUE Progressive Web App常见问题解答:解决开发中的疑难杂症
    3. 如何将Vue项目转换为PWA? 将Vue项目转换为PWA需要您: 安装必要的库和工具,如Vue CLI、Vuex和Service Worker。 在Vue项目中配置Service Worker。 添加必要的Manifest文件。 ...
    99+
    2024-02-06
    2. 为什么使用Vue构建PWA? Vue是一个受欢迎的JavaScript框架 它具有轻量级 高性能 易于使用等优点。使用Vue构建PWA可以快速开发出高质量的应用 并可以轻松地跨平台部署。
  • 如何理解Web开发的IDE
    这篇文章将为大家详细讲解有关如何理解Web开发的IDE,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Windows 下的IDE◆Visual Web Dev...
    99+
    2024-04-02
  • 如何解决web开发中浏览器兼容性问题
    这篇文章主要介绍如何解决web开发中浏览器兼容性问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!兼容性问题及解决方式1.object-fit在ie11和edge中不兼容,可以一些c...
    99+
    2024-04-02
  • 如何解决mysql查询字符集不匹配问题
    这篇文章主要介绍如何解决mysql查询字符集不匹配问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!有时候MySQL数据库建表的时候采用的是latin的字符集,而网页中查询的是utf...
    99+
    2024-04-02
  • C++ 函数异常常见问题解答:解决开发中的难题
    要解决 c++++ 函数异常问题,可遵循以下步骤:使用 try-catch 块或 noexcept 指定符处理异常。当函数确实不会引发任何异常时,才使用 noexcept。使用 thro...
    99+
    2024-05-02
    c++ 异常
  • 解决JavaEE开发中字符编码出现乱码的问题
    网上有很多处理字符编码的解决方案,在此,我站着前人的肩膀上作自己的总结。在我看来,出现乱码问题的解决方法无非就是在3个地方进行编码设置:HTML、JSP等前端页面;后台servlet中request和response对象;服务器配置文件。1...
    99+
    2023-05-31
    字符编码 乱码 javaee
  • C#开发中如何处理并发访问问题
    C#开发中如何处理并发访问问题在C#开发中,处理并发访问问题是非常重要的,尤其是在多线程环境下。如果不正确处理并发访问,可能会导致数据不一致或者程序崩溃等问题。本文将介绍一些在C#开发中处理并发访问问题的常用方法,并提供具体的代码示例。使用...
    99+
    2023-10-22
    并发处理 线程安全 锁定
  • C++中字符串处理问题的详解
    C++中字符串处理问题的详解在C++编程中,字符串处理是一个非常常见的任务。无论是读取用户输入、从文件中读取数据、或者进行数据处理和格式转换,字符串处理都扮演了重要的角色。本文将介绍C++中常见的字符串处理问题,并提供具体的代码示例。字符串...
    99+
    2023-10-22
    C++ 字符串处理 问题详解
  • 如何解决BufferedReader读取文件指定字符集问题
    小编给大家分享一下如何解决BufferedReader读取文件指定字符集问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!BufferedReader读取文件指定字符集问题默认的读取方式BufferedReader&nbs...
    99+
    2023-06-22
  • web开发中如何优雅的解决"重复请求"问题
    目录前言提出问题解决思路axios 如何取消请求封装axios准备工作开始封装总结前言 在我们web开发过程中,很多地方需要我们取消重复的请求。但是哪种场合需要我们取消呢?我们如何取...
    99+
    2024-04-02
  • 如何理解WEB开发中的图片分析
    本篇文章给大家分享的是有关如何理解WEB开发中的图片分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、缩小图片大小当图片很多的时候,减少图...
    99+
    2024-04-02
  • 如何理解WEB开发中的Python WSGI协议
    今天就跟大家聊聊有关如何理解WEB开发中的Python WSGI协议,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Web应用程序开发Web应用程序的本质是什么简单描述Web应用程序的...
    99+
    2023-06-02
  • Python Django 常见问题解答:解决开发中的疑难杂症
    1. Django 无响应或加载缓慢 问题: 应用程序无响应或加载速度非常慢。 解决方案: 检查以下内容: 服务器是否已冻结。 数据库是否正在运行。 是否启用了调试工具栏,它可能会减慢性能。 是否使用了分页或缓存等优化技术。 2....
    99+
    2024-04-02
  • web开发中如何实现大屏数字滚动效果
    这篇文章主要介绍web开发中如何实现大屏数字滚动效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!大屏数字滚动效果来源于最近工作中一张大屏的UI图,该UI图上有一个模块需要有数字往上...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作