`

mysql latin1 转 utf8 中文乱码

阅读更多

环境:mysql数据库字符集为:latin1

           java web项目连接数据库为:utf-8

中文乱码解决办法:

插入时:把插入内容转为unicode,再插入数据库

查询时:把latin1查询结果转成unicode,再从unicode转成utf-8

 

/**
	 * latin1字符集转换为UTF-8
	 * @param s
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String latin1ToUtf8(String s) 
	{
		if (s != null)
        {
            try
            {
                int length = s.length();
                byte[] buffer = new byte[length];
                //0x81 to Unicode 0x0081, 0x8d to 0x008d, 0x8f to 0x008f, 0x90 to 0x0090, and 0x9d to 0x009d.
                //Mysql 的latin1 不等于标准的latin1(iso-8859-1) 和cp1252,
                //比iso-8859-1多了0x80-0x9f字符,比cp1252多了0x81,0x8d,0x8f,0x90,0x9d 一共5个字符
                for (int i = 0; i < length; ++i)
                {
                    char c = s.charAt(i);
                    if (c == 0x0081)
                    {
                        buffer[i] = (byte) 0x81;
                    }
                    else if (c == 0x008d)
                    {
                        buffer[i] = (byte) 0x8d;
                    }
                    else if (c == 0x008f)
                    {
                        buffer[i] = (byte) 0x8f;
                    }
                    else if (c == 0x0090)
                    {
                        buffer[i] = (byte) 0x90;
                    }
                    else if (c == 0x009d)
                    {
                        buffer[i] = (byte) 0x9d;
                    }
                    else
                    {
                        buffer[i] = Character.toString(c).getBytes("CP1252")[0];
                    }
                }
                String result = new String(buffer, "UTF-8");
                return result;
            }
            catch (UnsupportedEncodingException e)
            {
                e.printStackTrace();
            }
        }
        return null;
	}

 

分享到:
评论

相关推荐

    mysql乱码问题解决

    打印sql语句还是中文 到数据库发现乱码,本以为是hibernate搞的,结果证明不是hibernate 自己也是网上解决办法 自己的问题解决了 希望能帮助其他人 运行命令:SHOW VARIABLES LIKE 'character_set_%'; 结果如下 '...

    MySql修改数据库编码为UTF8避免造成乱码问题

    mysql 创建数据库时指定编码很重要,很多开发者都使用了默认编码,乱码问题可是防不胜防。制定数据库的编码可以很大程度上避免... 发现很多对应的都是 latin1,我们的目标就是在下次使用此命令时latin1能被UTF8取代。第

    mysql 数据库乱码问题解决

    MySQL数据库乱码-Linux下乱码问题一 乱码问题是很让人抓狂的问题,下面我将记录一下linux下mysql乱码问题的解决...mysql默认字符集是latin1,但是我们大部分程序使用的字符集是utf8,我们就需要修改mysql的字符集了。

    Mysql中文乱码问题的最佳解决方法

    一般来说,造成MySQL出现中文乱码的因素主要有下列几点: 1.server本身字符集设定的问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程序(例如php)的连线语系设定问题 对此,...

    mysql默认编码为UTF-8 通过修改my.ini实现方法

    mysql默认的编码是Latin1是I-8859-1的别名,但Latin1是不支持汉字的,所以要将其改为UTF-8或GBK 1.关闭mysql服务器,这个很重要。 2.通过my.ini设置mysql数据库的编码 在mysql数据库的安装根目录下找到my.ini,例:C...

    MySql中表单输入数据出现中文乱码的解决方法

    MySQL会出现中文乱码的原因在于 1.server本身设定问题,一般来说是latin1 2.建库建表时没有制定编码格式。 MySql中表单输入数据出现中文乱码的解决方法: 1.建库的时候 CREATE DATABASE test CHARACTER SET '...

    windows环境下Mysql中文乱码问题解决方法

    最近开发项目中又重新拿起了Mysql,在搭建环境的时候遇到了中文乱码问题。...设置里面的latin1为utf8 3、另外如果在Java端通信数据的时候发生了乱码的话就response.setCharacterEncoding(“utf-8”); 您

    MySQL的中文UTF8乱码问题

    MySQL从4.x版本开始支持Unicode,3.x只有latin1编码。刚工作的时候就开始用MySQL了,用的php存取,网页xxx.php是gb2312的编码,存进去的数据用php取出来是中文,用phpMyAdmin执行select、update、dump都是中文,没有...

    完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题

    MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级、降级,特别是升级MySQL的版本,为了不让程序...

    nodejs和C语言插入mysql数据库乱码问题的解决方法

    在这里记录了nodejs过程中的一些乱码情况,这里的乱码主要是由于网页的编码方式与nodejs的默认解码方式...原因是nodejs默认处理字符是utf8,而mysql默认是latin1,毕竟是欧洲人开发的数据库。分析如下  命令show var

    MySQL插入中文不乱码的5种方法

    登录MySQL,先做 set names latin1 ,然后在更新语句或者执行SQL语句 mysql&gt; set names latin1; mysql&gt; source test.sql; 方法二: 在SQL文件中指定set names latin1;然后登录MySQL,执行相应文件 [root@localhost ...

    python查询mysql中文乱码问题

    python2.7 查询或者插入中文数据在mysql中的时候出现中文乱码 — 可能情况: 1.mysql数据库各项没有设置编码,默认为’latin’ 2.使用MySQL.connect的时候没有设置默认编码 3.没有设置python的编码,python2.7默认为’...

    php版mysql大数据库备份和恢复工具

    一般为GBK,UTF8或Latin1.导出后,可以用文本编辑器先查看一下,看是否出现问号(?)等乱码. 3.导出和导入数据编码要保持一致(见特别说明4). 4.虽然程序目前支持GBK、BIG5、UTF8之间的编码转换,但这种转换不是安全的....

    mysql乱码处理

    mysql乱码处理,MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如php)的连线语系设定问题 强烈建议使用...

    Mysql 下中文乱码的问题解决方法总结

    刚开始先检查MySQL数据库,发现正如网上所说,部分编码是latin1, 是如下的样子: 果断改啊 set character_set_client=utf8; set character_set_connection=utf8; set character_set_database=utf8; set character

    mysql 中文乱码 解决方法集锦

    第一个方法: MySQL 4.1 中文乱码的问题 最近要将 MySQL 4.0 升级到 MySQL 4.1 ,发现了中文乱码的问题,希望以下见解对大家有用。 1. MySQL 4.1 在文字上有很大改进,它有了 Character Set 与 Collation 的慨念。 2...

    人工智能-项目实践-信息管理系统-C++ Qt 基于数据库Mysql学生信息管理系统

    安装引导里一定要将默认的latin1编码换成utf8编码,不然后面会中文乱码 2,在那台电脑的MySQL中导入本人数据库脚本文件 studentmanager.sql (该文件已打包好)(这里推荐使用navicate for mysql 导入 数据库创建是...

    解决python2.7 查询mysql时出现中文乱码

    python2.7 查询或者插入中文数据在mysql中的时候出现中文乱码 — 可能情况: 1.mysql数据库各项没有设置编码,默认为’latin’ 2.使用MySQL.connect的时候没有设置默认编码 3.没有设置python的编码,python2.7默认为...

    C++ Qt 基于数据库Mysql学生信息管理系统-数据结构课设

    安装引导里一定要将默认的latin1编码换成utf8编码,不然后面会中文乱码 2,在那台电脑的MySQL中导入本人数据库脚本文件 studentmanager.sql (该文件已打包好)(这里推荐使用navicate for mysql 导入 数据库创建是...

    python sqlobject(mysql)中文乱码解决方法

    UnicodeEncodeError: ‘latin-1’ codec can’t...use_unicode=1&charset=utf8) Python mysql 中文乱码 的解决方法,有需要的朋友不妨看看。 先来看一段代码:复制代码 代码如下:import MySQLdb db_user = “tiger”

Global site tag (gtag.js) - Google Analytics