java读写以latin1编码存储以utf-8输出的mysql数据库(中文乱码)

java读写以latin1编码存储以utf-8输出的mysql数据库(中文乱码)

ID:34707888

大小:54.85 KB

页数:6页

时间:2019-03-09

java读写以latin1编码存储以utf-8输出的mysql数据库(中文乱码)_第1页
java读写以latin1编码存储以utf-8输出的mysql数据库(中文乱码)_第2页
java读写以latin1编码存储以utf-8输出的mysql数据库(中文乱码)_第3页
java读写以latin1编码存储以utf-8输出的mysql数据库(中文乱码)_第4页
java读写以latin1编码存储以utf-8输出的mysql数据库(中文乱码)_第5页
资源描述:

《java读写以latin1编码存储以utf-8输出的mysql数据库(中文乱码)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java读写以latin1编码存储以UTF-8输出的MySQL数据库(中文乱码)(2011-09-1420:09:26)转载▼标签:jdbcmysqllatin1编码utf-8编码中文乱码杂谈分类:MySql原文:http://blog.csdn.net/huyiyang2010/article/details/6202656使用Java读写存储在latin1编码的MySQL中的UTF-8编码的中文绝大多数情况下,一个项目中,都是使用同一套编码。如,全部使用UTF-8或者GBK。但是当涉及到多个项目合并、新手加入等情况时,不可避免出现使用多套编码的情况。所有字符串都是英文的情况还好,若是出现

2、了中文,就导致了乱码的出现。下面以我碰到的问题的解决方案说明。前置说明:==============JavaMySQLUTF-8utf8ISO-8859-1latin1==============MySQL数据库使用latin1的编码,导入导出的数据是UTF-8编码的(即其与java端的交互是utf-8编码格式的),即将MySQL当做一个透明的存储。============================character_set_clientlatin1character_set_connectionlatin1character_set_databaselatin1character_s

3、et_filesystembinarycharacter_set_resultslatin1character_set_serverlatin1character_set_systemutf8=============================Java编写的导入数据程序(包括查看数据校验,即涉及到数据的导入导出)C++编写的导出数据程序(仅涉及到数据的导出)Java程序如何读写中文第一种解决办法:0.Java文件设置为UTF-8编码(Eclipse的设置方法为:点击Window->Preferences->General->Workspace->Textfileencoding->Ot

4、her填入UTF-8)1.设置URL参数characterEncoding为utf8。示例:jdbc:mysql://127.0.0.1:3306?characterEncoding=utf82.所有的数据库连接在执行任何SQL语句之前,先执行SQL语句setnames'latin1'3.取数据时,需要从ISO-8859-1转码。本项目示例为:newString(rs.getString("SampleColumnName").getBytes("ISO-8859-1"),"UTF-8")为什么这样解决?0.对于写在*.java文件中的中文,它的编码方式就是文件的编码方式,设置为UTF-8,

5、即写在*.java文件中的中文编码方式为UTF-8;1.对于从JDBC驱动程序发往服务器的所有字符串,缺省情况下均将自动地从原生的JavaUnicode形式转换为客户端字符编码。如果要转成特定编码,则需要设置characterEncoding,如要设置为UTF-8,则需要设置为characterEncoding=utf82.setnames'latin1'主要是将以下三个字符集的编码方式改为latin1,即character_set_client、character_set_connection和character_set_results这三个的编码。当插入数据时,MySQL服务器把客户端传

6、来的statement,从character_set_client字符集转换成character_set_connection字符集(除非字符串中有类似_latin1或者_utf8的字符集声明)。当查询数据时,character_set_results系统变量表明了服务器返回查询结果时使用的字符集。服务器返回的数据,有比如字段的值和元数据(例如字段名)。由此,可以得出:本项目中,SQL语句的编码是UTF-8;URL参数characterEncoding设置的编码为SQL语句的编码;在setnames'latin1'后,character_set_client为latin1,因此,JDBC会将

7、SQL语句从UTF-8转化为latin1;由于character_set_client和character_set_connection一致,所以MySQL服务器不做转换。将SQL要求存储的数据存储在latin1的数据库中。3.取数据时,由于存储的数据和character_set_results的编码方式都为latin1,不做转码,取回后,由于显示中文要求UTF-8,所以需要转码为UTF-8。但是,MySQL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。