中文乱码问题的一些总结

简介:

1.在程序开发中,我们常遇到中文乱码的问题:

eg.从页面传来的中文,到后台乱码了。怎么办19.gif

那么在接受页面传值的前面要加上这么一句代码:

request.setCharacterEncoding("UTF-8");


如果还是不行:那么我们就需要转码了,eg.=

request.setCharacterEncoding("UTF-8");

String name = request.getParameter("username");

name = new String(name.getBytes("ISO8859-1"),"UTF-8");


2. 当你向页面输出内容时,如何避免中文乱码。eg.向页面输出XML,HTML

应该加上

response.setCharacterEncoding("UTF-8");

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

PrintWriter out = response.getWriter();

out.print("....");

out.flush();

out.close();


==========================================================================

2013-06-21-han

当我们通过URL进行传值时,为了防止中文乱码的问题,我们可以这样做,

1.传值的地方:java.net.URLEncoder.encode("中文中文");

2.接受的地方:java.net.URLDecoder.encode("接受的中文值");



可以参考的一篇文章



++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2014-10-15-han------------httpClient等网络请求返回值乱码问题分析


1.java中,UTF-8  GBK,可能乱成下面的

wKiom1Q-WSyAro34AAAuDteH6zQ667.jpg


2.java中,GBK  UTF-8,可能乱码如下

wKiom1Q-WU_j1pXQAAAHZnXO7FA418.jpg


3.

对于httpClient等网络请求乱码的原因可能如下:

  请求方和接收方没有统一字符。

   没有对接收的字符做字符硬编码,而是使用jvm默认的file.encoding的默认编码。


4.案例展示:

logger.info("+++++++++ JDK的位数:" + System.getProperty("sun.arch.data.model"));

logger.info("file.encodin ============  encoding:"+ System.getProperty("file.encoding"));

logger.info("sun.jnu.encoding============  encoding:" +System.getProperty("sun.jnu.encoding"));


本地打印:64位,GBK,GBK                 中文不乱码

Linux上:64位,UTF-8UTF-8               中文乱码



5.分析原因:

java中,如果没有指定charset的时候,比如newString(byte[] bytes),都会调用Charset.defaultCharset()的方法。所以,java中编码中,我们应该学会指定字符编码!

 

BufferedReader in = newBufferedReader(new FileReader(path.toString()));

换成:

BufferedReader in = newBufferedReader((new InputStreamReader(newFileInputStream(path.toString()),"utf-8")))

 

new String(decrypt(hexStr2ByteArr(strIn)));

换成:

new String(decrypt(hexStr2ByteArr(strIn)),"GBK");

 

 

new String(Base64.decodeBase64(s.getBytes()));

换成:

new String(Base64.decodeBase64(s.getBytes()),"GBK");


参考文章:

http://blog.csdn.net/raintungli/article/details/6651076

http://blog.csdn.net/zzs0829/article/details/7407598            jvm默认字符编码问题】

http://www.kankanews.com/ICkengine/archives/35323.shtml

http://blog.csdn.net/zhuyijian135757/article/details/37706437

http://blog.csdn.net/zhengqiqiqinqin/article/details/17501219

http://www.cnblogs.com/silentjesse/archive/2011/11/04/2235674.html





     本文转自韩立伟 51CTO博客,原文链接:http://blog.51cto.com/hanchaohan/931061,如需转载请自行联系原作者






相关文章
|
数据采集 开发者
如何编写有效的爬虫代码来避免网站的反爬虫机制?
如何编写有效的爬虫代码来避免网站的反爬虫机制?
494 1
|
Linux
Win或Linux系统下用conda安装Open Babel
Win或Linux系统下用conda安装Open Babel
2432 0
Win或Linux系统下用conda安装Open Babel
|
算法 Unix BI
操作系统(5.2)--请求分页储存管理模式
在请求分页系统中所需要的主要数据结构是页表。为支持请求分页,须在页表中再增加若干项,供程序(数据)在换进、换出时参考。
906 0
|
4月前
|
存储 监控 NoSQL
140_异步推理:队列管理框架 - 使用Celery处理高并发请求的独特设计
在大型语言模型(LLM)部署的实际场景中,推理服务的并发处理能力直接影响用户体验和系统稳定性。随着LLM应用的普及,如何高效处理大量并发请求成为部署优化中的关键挑战。传统的同步请求处理方式在面对突发流量时容易导致系统过载,响应延迟增加,甚至服务崩溃。异步推理通过引入队列管理机制,能够有效缓冲请求峰值,平滑系统负载,提高资源利用率,从而为LLM服务提供更稳定、更高效的并发处理能力。
|
8月前
|
数据采集 存储 Web App开发
Python爬虫技巧:设置Cookie永不超时的详细指南
Python爬虫技巧:设置Cookie永不超时的详细指南
|
数据采集 自然语言处理 安全
控制电脑手机的智能体人人都能造,微软开源OmniParser
微软研究团队推出OmniParser,旨在提升GPT-4V等多模态模型在用户界面操作方面的性能。通过解析用户界面截图为结构化元素,OmniParser显著增强了模型的交互能力,使其在多种基准测试中表现出色。该技术开源,促进了社区合作与技术创新,但同时也面临数据质量、计算资源及安全隐私等挑战。
517 14
|
Android开发 数据安全/隐私保护
老板叫我写个APP自动化--登录脚本--简单输出
老板叫我写个APP自动化--登录脚本--简单输出
280 0
老板叫我写个APP自动化--登录脚本--简单输出
|
API
如何制作外挂
一、先说一下写一个外挂需要什么条件 1、熟练的C语言知识 目前的外挂大部分都是用BC或者是vc写的,拥有熟练的C语言知识是写外挂的基本条件 2、具有很强的汇编基础 一般游戏都不可能有原代码的,必须靠反汇编或者跟踪的办法来探索其中的机理 ,所以有强的汇编基础也是必不可少的条件 3、熟练掌握...
3166 0
|
SQL 关系型数据库 MySQL
使用OceanBase进行大规模数据迁移的最佳实践
【8月更文第31天】随着业务的不断扩展,数据迁移成为了企业日常运营中不可避免的任务之一。对于那些正在从传统的数据库系统向分布式数据库系统过渡的企业来说,数据迁移尤为重要。OceanBase 是一个由阿里巴巴集团开发的高性能分布式关系数据库,它以其高可用性、水平扩展能力和成本效益而闻名。本文将探讨如何使用 OceanBase 进行大规模数据迁移,并提供相关的最佳实践和代码示例。
1145 1