文档章节

中文乱码 解决思路

之渊
 之渊
发布于 2017/02/24 17:24
字数 650
阅读 9
收藏 0

一般的 乱码 ,百度 就和很多 的解决办法了。 总之 乱码的 出现 总的 原因是 : 编码的时候 使用 一种 字符集, 解码的时候 使用 另一种 字符集。 不要 想着 使用一种 办法 或者 是 一段代码 ,把 所有的中文乱码 问题 都解决掉。 就是 要 知道 编码的时候 使用的是 什么 字符集, 解码的时候,我们使用 一样的 字符集即可。 这样的 办法 对于其他语言来说都是 适用的。

下面是 我遇到的 一种,让我比较郁闷的 方式,花费了 我比较多的 精力:

public static String sendPostRequest(String path,String param) throws IOException {
		String sendUrlString=path+param;
		
		URL url = new URL(sendUrlString);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		//设置post方式请求
		conn.setRequestMethod("POST");
		
		//conn.setRequestProperty("Accept-Charset", "utf-8");
		//conn.setRequestProperty("contentType", "utf-8");
		conn.setRequestProperty("Content-type", "application/x-java-serialized-object");

		//设置传入参数
		conn.setDoOutput(true);
		//传入参数
		//conn.getOutputStream().write(param.toString().getBytes());
		// 解决中文乱码, 在 Linux 下没有乱码,本地有 ,估计 Linux 已经 帮我们转码了一次了。
		// 而且 Linux 下 的默认编码并没有 和 本地的一致,比如tomcat的啊, 系统的啊,没有 该为 默认中文的等。
		// 既然这样 在 Linux 下没有 乱码,可以不用管,如果以后  可以 去 修改 服务器里面的 编码。
		BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
		
		// 解决中文乱码,在 Linux 下有乱码,本地没有
		//BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"GBK"));
				
		
		String readingString= "";
		// 读取完所有内容
		String readl=null;
		while (( readl=reader.readLine() )!=null) {
			
			readingString=readingString+readl;
			
			readl=null;
		}
		
		
		
		return readingString;
		
	}

就是 这样奇怪, 本地 和 服务器 运行的 时候 获取的 中文有乱码, 使用 的 不同 办法 即可。 就是这样 郁闷,我一直想着 统一 起来,不要 让 某个 环境 下面乱码。

参考 地址: https://www.oschina.net/question/920274_144632 其他网友给我的 启发, 这样子的话, tomcat 或者是 nginx 都是需要配置的 统一字符集的。 原来的设置: LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" 现在改为: LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" 然后再运行,通过日志分析,其form表单 post提交过来的数据不再乱码。但是,存入到mysql数据库表中的数据是乱码,问题依然没有解决,于是,到/etc/下,打开my.cnf文件,修改3处地方: [client] port = 3306 socket = /var/lib/mysql/mysql.sock default-character-set=utf8 2、在[mysqld]字段里加入character-set-server=utf8,如下: [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock character-set-server=utf8 3、在[mysql]字段里加入default-character-set=utf8,如下: [mysql] no-auto-rehash default-character-set=utf8 修改完成后,标红的地方是我加的。service mysql restart重启mysql服务就生效

© 著作权归作者所有

共有 人打赏支持
之渊
粉丝 11
博文 526
码字总数 155467
作品 0
佛山
程序员
私信 提问
Spring MVC3返回JSON数据中文乱码问题解决

Spring MVC3返回JSON数据中文乱码问题解决 查了下网上的一些资料,感觉比较复杂,这里,我这几使用两种很简单的办法解决了中文乱码问题。 Spring版本:3.2.2.RELEASE Jackson JSON版本:2.1...

双月通天
2015/10/14
209
0
【MySQL-20180117】MySQL终端无法输入中文

网上大部分都是MySQL终端输入中文出现乱码,然后更改MySQL server的字符集的操作,却缺少MySQL终端无法输入中文,将SQL语句粘贴复制到MySQL的终端中文无法显示: alter qsjxrecommend add co...

liuhuang9496
01/17
0
0
HttpUrlConnection流传输问题(正确传输包含中文的JSON字符串)

目前在写一个功能,主要是使用 HttpURLConnection 发送http请求调用外部接口。本来一切正常的,可是在发送post请求上传数据给服务端时,服务端返回错误信息:获取的JSON请求是乱码的。 因为请...

wishingpep
08/10
0
0
cmd中查询mysql表出现中文乱码

问题:在pycharm中正常的fetchall拉取数据,能够正常显示,而在cmd中直接select却出现中文乱码。 解决思路:右键查看cmd命令窗口属性得到,cmd窗口默认编码是gbk(如下图所示),而设置的mys...

fang_faye
09/20
0
0
关于在ajax中传递中文引起的乱码问题。

测试了下,以form的形式提交,不管是ie或者google浏览器或者火狐都没出现乱码情况。 而放在 function editMenu() {var menuName = $("#menuName").val();menuName = encodeURIComponent(men...

巴顿
2013/09/09
0
5

没有更多内容

加载失败,请刷新页面

加载更多

Linux学习-1031(rsync同步工具 上)

10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通过ssh同步 一、 rsync工具介绍 rsync是一个同步工具,在日常的运维中常会用到。它可以本地同步,也实现可以远程两台机器同步。...

wxy丶
3分钟前
0
0
python实战一期:第一天

1. 为什么学习python 1.1 为什么要学Python? Python第一是个非常牛B的脚本语言,能满足绝大部分自动化运维的需求,又能做后端C/S架构,又能用WEB框架快速开发出高大上的Web界面,只有当你自...

laoba
5分钟前
0
0
Java并发编程学习三:线程同步的关键字以及理解

上篇文章中介绍了Java线程的带来的问题与内存模型中介绍了线程可能会引发的问题以及对应Java的内存模型,顺带介绍了Volatile和Sychronized关键字。今天对Java中涉及到的常见的关键类和关键字...

JerryLin123
12分钟前
0
0
我用代码来给你们分析一个赚钱的技巧

赚钱是个俗气的话题,但又是人人都绕不开的事情。我今天来“科学”地触碰下这个话题。 谈赚钱,就会谈到理财、投资,谈到炒股。有这样一个笑话: 问:如何成为百万富翁? 答:带一千万进入股...

crossin
12分钟前
0
0
spring MatchingBean应用

1、编写接口FactoryList import java.util.List;public interface FactoryList<E extends MatchingBean<K>, K> extends List<E> { E getBean(K factor); List<E> getBeanLi......

重城重楼
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部