gbk转utf-8

1、文件转码:使用脚本

gbk转u8的脚本文件:

#!/bin/bash

FILE_SUFFIX="java xml html vm js"
# FILE_SUFFIX="vm"
file_names=""
for x in $FILE_SUFFIX
do
	file_names=`find . -name "*.$x" | xargs file -I | grep -v utf-8 | awk -F " |:" ‘{print $1}‘`
	for file_name in $file_names
	do
		# echo $file_name
		iconv -f cp936 -t UTF-8 $file_name >$file_name".new" &&
	    mv -f "$file_name.new" "$file_name"
	done
	echo "$x ok"

done

find . -name "*.xml" | xargs sed -i "" "/<?xml/s/GBK/UTF-8/g"
find . -name "*.xml" | xargs sed -i "" "/<?xml/s/GB2312/UTF-8/g"

echo "xml head is ok!"

find . -name "pom.xml" | xargs sed -i "" "/<encoding>/s/GBK/UTF-8/g"
find . -name "pom.xml" | xargs sed -i "" "/<encoding>/s/GB2312/UTF-8/g"
find . -name "pom.xml" | xargs sed -i "" "/project.build.sourceEncoding/s/GBK/UTF-8/g"
find . -name "pom.xml" | xargs sed -i "" "/project.reporting.outputEncoding/s/GBK/UTF-8/g"
find . -name "pom.xml" | xargs sed -i "" "s/pop-vender-common-pageframe/pop-vender-common-pageframe-utf8/g"

echo "pom.xml is ok!"

find . -name "*.properties" | xargs sed -i "" "/input.encoding/s/GBK/UTF-8/g"
find . -name "*.properties" | xargs sed -i "" "/output.encoding/s/GBK/UTF-8/g"

echo "velocity properties is OK!"

find . -name "strut*.xml" | xargs sed -i "" ‘/struts.i18n.encoding/s/GBK/UTF-8/g‘

echo "struts xml is ok!"

find . -name "*.vm" | xargs sed -i "" "s/\/common\/js\/jdmsg\/jd-msg.js/\/common\/js\/jdmsg\/jd-msg-utf8.js/g"
find . -name "*.vm" | xargs sed -i "" "/\/ui.datepicker.js/s/<script t/<script charset=\"GBK\" t/g"
find . -name "*.vm" | xargs sed -i "" "/\/jquery-calendar.js/s/<script t/<script charset=\"GBK\" t/g"
echo "vm is ok"

echo "finished"
# echo $file_names

2、文件转码后,本地环境改成utf-8环境,可能会有部分乱码文件,手动修复

3、含有中文js引用增加charset="gbk"

如依赖:static.360buying.com、shop.jd.com

4、打包编译编码:替换成UTF-8

5、xml设置格式:以前可能为gbk或gb2312,改成utf-8

6、web.xml转成UTF-8,请求拦截器字符编码

如使用spring配置

<!--Character Encoding filter(字符集拦截转换) -->

<filter>

<filter-name>charsetFilter</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>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

7、代码GBK使用

主要是代码里面写死GBK方式

如string.getBytes("GBK")替换

8、jdurl配置编码

增加<property name="charsetName" value="utf-8"/>

避税分页中含有中文乱码

如:jdurl的

编码设置:

<bean class="com.jd.pop.component.url.PopJdUrl">

<property name="url" value="${pop-vender.login.address}"/>

<property name="charsetName" value="utf-8"/>

</bean>

大概是这8条

重点在后面:

这时你会发现,页面的get请求请求服务器时还是会出现乱码,别慌,那是因为tomcat的编码你还没有设置.

利用request.setCharacterEncoding("UTF-8");来设置Tomcat接收请求的编码格式,只对POST方式提交的数据有效,对GET方式提交的数据无效!

要设置GET的编码,可以修改server.xml文件中,相应的端口的Connector的属性:URIEncoding="UTF-8",这样,GET方式提交的数据才会被正确解码。

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding="UTF-8" />

这样就ok了!!!

时间: 2024-08-01 17:05:50

gbk转utf-8的相关文章

关于解决乱码问题的一点探索之二(涉及Unicode(utf-16)和GBK)

    在上篇日志中(链接),我们讨论了utf-8编码和GBK编码之间转化的乱码问题,这一篇我们讨论Unicode(utf-16编码方式)与GBK编码之间转换的乱码问题.     在Windows系统自带的记事本中,我们按照图中所示使用Unicode编码保存.     在Visual Studio 2005中,单击"文件|高级保存选项"中选择Unicode-代码页1200. 文件中只有乱码与ASCII码     按照上一篇日志中的方法,我们使用WinHex软件查看文件的16进制数据,如

Discuz从GBK转码UTF-8的最佳方法

最近由于论坛帐号整合需要,不得不把原蓝卡论坛的GBK编码转换为UTF-8,由于Discuz官方并没有提供转换工具,网上也没有什么靠谱的教程,而且论坛中数据较多,可闪失不得,这不禁让我十分为难.. 我先尝试了网上比较流行的一种利用Discuz数据库功能进行数据库备份.恢复达到转换目的的方法,可是在我按照教程进行操作后,发现虽然前台的帖子.用户等数据全部恢复,但是后台的数据全部丢失!且还有部分乱码的情况出现,要重新设置那么多后台选项,我才不干呢!于是,我便开始琢磨另一种转换方法,当我看到另一篇教程,

Yii2的相关学习记录,Gridview小部件使用及kartik-v/yii2-grid扩展(五)

现在记录下Gridview的相关内容,也是强迫症犯了,Yii2自带的Gridview虽然不错,但是过滤栏如果一些字段用不着,不会自动合并成一行,当然也可以过滤栏不用,而是在最上方自己写一些需要检索的数据,但是这样很麻烦,还要自己去规划样式,写检索什么的.正好在搜索将检索栏和标题合并时,看到了kartik-v/yii2-grid可以实现这些功能,而且还自带导出excel.csv等数据,所以也顺便试了下它的功能,调出了自己喜欢的样式.在用kartik-v的Gridview之前我们还是要了解Yii2自

JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化. ObjectOutputStream 和 ObjectInputStream 分别与 FileOutputStream 和 FileInputStream 一起使用时,可以为应用程序提供对对象图形的

使用 python urllib2 抓取网页时出现乱码的解决方案

这里记录的是一个门外汉解决使用 urllib2 抓取网页时遇到乱码.崩溃.求助.解决和涨经验的过程.这类问题,事后看来只是个极小极小的坑,不过竟然花去很多时间,也值得记录一下.过程如下:目标: 抓取 http://sports.sina.com.cn/g/premierleague/index.shtml 代码: 1 2 3 4 5 6 # coding: u8 import urllib2 url = "http://sports.sina.com.cn/g/premierleague/ind

HTTP服务端JSON服务端

HTTP服务端JSON服务端 最后更新日期:  2014-5-18 Author: Kagula 阅读前提: CMake工具的基本使用 内容简介: CPPCMS是个开源Web开发框架,通过它可以很容易实现HTTP服务和JSON服务,这里介绍CPPCMS开发环境的搭建.写一个CPPCMS测试程序,它建立HTTP服务,向浏览器返回Hello,World页面.CPPCMS依赖的一些第三方库,其它地方已经介绍怎么Build,所以这里不重复了. 环境:Windows8.1 64bit.Visual Stu

sublime text 2 技巧

1. 文件快速导航: 这是sublime上面很好用的功能之一,ctrl+p可以调出窗口,菜单上的解释是gotoanythings ,确实如其所言,调出窗口后,直接输入关键字,可以在已打开的项目文件夹中进行快速文件名导航,而且支持模糊搜索,对于不想一直鼠标点开文件夹的同学来说 极为方便,并且在该窗口里加上:前缀即为行跳转(ctrl+G),加上@(ctrl+R)前缀在html里是id 关键字导航,css里是每条规则导航,js里则是每个function导航. 2. 命令行模式 ctrl+` 可以调出命

字符编码及java中的应用总结小记

这几日突然想搞清楚常见字符编码(ASCII.GBK.UTF.Unicode.ISO-8859-1)的关系及项目中可能存在的相关隐患,网上搜索了一大堆资料,这里结合代码实测,简单做个小结: 浅谈这几种编码的出现 1.1 ASCII 我们知道,在计算机内部,所有信息最终被表示为二进制字符串,每个二进制位有1和0两种表现形式,位是内存最小存储单位,其中8位构成一个字节,字节是数据存储的最小单元,因此8个二进制位即一个字节可以表示256个符号,从00000000-11111111. 上个世纪60年代,美

Android NIO(Noblocking I/O非阻塞I/O)小结

参考:http://www.cnblogs.com/cpcpc/archive/2011/06/27/2123009.html 对于Android的网络通讯性能的提高,我们可以使用Java上高性能的NIO (New I/O) 技术进行处理,NIO是从JDK 1.4开始引入的,NIO的N我们可以理解为Noblocking即非阻塞的意思,相对应传统的I/O,比如Socket的accpet().read()这些方法而言都是阻塞的. NIO主要使用了Channel和Selector来实现,Java的Se

java字符编码,字符转码

编码:String->byte[]; str.getBytes(charsetName) 解码:byte[]->String; new String(byte[],charsetName); package pack; import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.util.Arrays; public class Demo{ /** * 用gbk编码 utf解码