有时候json文件,纯文本的文件在nginx或者tomcat上为乱码
可能不像html或者jsp那样可以设置字符编码
注意nginx和tomcat都有utf8的配置
另外要注意
文件也有编码
linux下用vim打开
:set encoding=utf-8
:set fileencoding=utf-8
转http://ssmax.net/archives/1136.html
参考http://www.wcode.net/plus/view.php?aid=246850
由于以前偷懒的原因,很多数据库都是使用latin1作为字符编码,这样可以原样保留数据的字节流,但是最近发现新版的mysql驱动,包括345各版本的最新驱动,用characterEncoding=latin1 参数去访问数据,都会出现问号乱码的问题。
在网上查了一下,有人说是驱动里面自带强制转换,所以出了问题,根据提示看了一下代码,果然在
ResultSetRow在getString的时候,会使用 SingleByteCharsetConverter 来强制转码,发生了问题。
网上说要修改驱动,我自己尝试了一下,既然强制转码里面选择了使用cp1252,那这个字符集应该也是单字符全集,所以我直接尝试用该字符集来连接,问题就解决了。。。。
有两种解决方案:
1. 使用ResultSet中的getBytes方法,直接获取原始bytes数组,自己按照录入时候的编码new String即可。
2. 如果用了框架结构,写了必须获取String的,那么连接参数可以写
characterEncoding=cp1252
程序使用的时候
rs.getString(1).getBytes(“cp1252″)
即可获取原始字节数组,然后也是按照录入编码进行 new String 即可。
注意这种方法可能会引起问题,由于cp1252对一些字节的处理并不是我们理解的那样,比如
MySQL translates 0×81 to Unicode 0×0081, 0x8d to 0x008d, 0x8f to 0x008f, 0×90 to 0×0090, and 0x9d to 0x009d.
如果汉字里面刚好有着3中字节的,就会出问题,显示问号。。。
研究了一下,发了一个bug帖,http://bugs.mysql.com/bug.php?id=64071
估计也是没人理会的了,呵呵,就当练练英文。
我的程序:
con = (Connection) DriverManager
.getConnection(
"jdbc:mysql://1231231231213:3365/origin_chapters?characterEncoding=cp1252",
"bookapp_r", "6c0a3ebf4");
chapter.setChapter_content(new String(rs.getString("Content").getBytes("cp1252"), "gbk"));
分享到:
相关推荐
mySQL数据库latin1-gbk,gbk-utf8,gbk-big5 博文链接:https://kenter1643.iteye.com/blog/121594
4,乱码问题:sybase使用latin1字符集的时候,c#中读取字符串会是乱码,进行如下转换就行: System.Text.Encoding.GetEncoding("gbk").GetString( System.Text.Encoding.GetEncoding("latin1").GetBytes( s );
打印sql语句还是中文 到数据库发现乱码,本以为是hibernate搞的,结果证明不是hibernate 自己也是网上解决办法 自己的问题解决了 希望能帮助其他人 运行命令:SHOW ...'collation_server', 'latin1_general_ci'
MySQL数据库乱码-Linux下乱码问题一 乱码问题是很让人抓狂的问题,下面我将记录一下linux下mysql乱码问题的解决...mysql默认字符集是latin1,但是我们大部分程序使用的字符集是utf8,我们就需要修改mysql的字符集了。
NULL 博文链接:https://lijunjie.iteye.com/blog/456650
NULL 博文链接:https://macrotea.iteye.com/blog/1683977
如果连接数据库,读出的中文信息显示乱码,可以试试。
python-latin1-to-utf8 将错误的 Latin-1 字符转换为 UTF-8 字符。 是对编码问题的全面描述和解释。 用法 $ python latin1-to-utf8.py Automática > Automática 相关项目
ISOLatin-1字符集[借鉴].pdf
改成 'gb2312' => 'latin1', 保存,OK,在进入phpMyAdmin管理,选择语言chinese simplified(zh-gb2312-utf-8) 再看看你的那些中文数据。 所以说,我的这个解决办法就只是修改libraries/select_lang.lib.php这一个...
0000-00ff之间的字符编码,方便查阅,很好的资料。
1.server本身字符集设定的问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程序(例如php)的连线语系设定问题 对此,强烈建议使用utf8编码!因为utf8可以兼容世界上所有字符! 一...
用phpmyadmin建立的数据库如果你不指定编码他默认是latin1_swedish_ci 编码,既瑞典语不区分大小写,而我们中国做的网页不是GBK就是GB2312编码,这样不出现乱码才怪. 1,建立数据库时指定编码. 在此再唠叨一下常用的...
各种特殊符号对照表,web开发经常用到的特殊字符全都包含
mysql 创建数据库时指定编码很重要,很多开发者都使用了默认编码,乱码问题可是防不胜防。制定数据库的编码可以很大程度上避免... 发现很多对应的都是 latin1,我们的目标就是在下次使用此命令时latin1能被UTF8取代。第
在这里记录了nodejs过程中的一些乱码情况,这里的乱码主要是由于网页的编码方式与nodejs的默认解码方式...原因是nodejs默认处理字符是utf8,而mysql默认是latin1,毕竟是欧洲人开发的数据库。分析如下 命令show var
ISO字符集,挺全的