`

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使用UTF8中文乱码处理方法.docx

    MYSQL 使用 UTF8 中文乱码处理方法 MYSQL 使用 UTF8 中文乱码处理方法是指在使用 MYSQL 数据库时,如何正确地处理中文乱码问题。这个问题主要涉及到四个环节:前端网页、字符传输、连接 MYSQL 和 MYSQL 的存贮方式...

    解决C#操作Mysql时中文乱码问题(真的解决了)

    总的来说,解决C#操作MySQL中文乱码问题的关键在于保持从数据库配置到代码再到文件的整个过程中的编码一致性,使用UTF-8编码,并确保在每个环节都正确地指定和处理。通过以上步骤,你应该能够成功地避免中文乱码问题...

    解决连接mysql中文显示乱码

    常用的字符集有`latin1`、`utf8`、`gbk`等,其中`utf8`对中文的支持较好。 #### 3. **连接参数的正确设置** 当使用Java或JSP等语言连接MySQL时,必须确保连接参数中包含正确的字符集设置。这通常通过URL参数`...

    mysql中文乱码问题

    默认情况下,character_set_server 变量的值是 latin1,這导致了中文乱码问题的出现。另外,数据库的编码方式也可能是导致乱码问题的原因。如果数据库的编码方式不是 utf8, 那么在插入中文数据时就会出现乱码问题。...

    好东西 mySQL数据库latin1-gbk,gbk-utf8,gbk-big5

    MySQL数据库在处理字符编码时,经常涉及到不同的字符集转换,如latin1到gbk,gbk到utf8,甚至gbk到big5等。这些转换在处理多语言数据或者迁移数据库时尤其重要,因为不同的字符集支持不同的字符范围,比如latin1主要...

    MySQL乱码解决方案数据库乱码

    1. **服务器端字符集设置不当**:MySQL服务器默认字符集可能与实际使用的字符集不符,例如,默认为`latin1`而实际需要的是`gbk`或`utf8`。 2. **客户端连接字符集设置错误**:客户端(如PHP应用)连接到MySQL时没有...

    Mysql插入中文乱码问题解决

    通常,MySQL 的默认字符集是 Latin1(ISO 8859-1),这是一种西文字符集,并不支持中文字符。当尝试存储中文数据时,由于字符集不匹配,就会导致乱码现象。 此外,需要注意的是 UTF-8 是一种国际通用的编码格式,它...

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

    当使用默认字符集时,由于MySQL默认字符集为latin1,与网页数据常用的UTF8编码不一致,这会导致数据存取过程中出现乱码。为了防止这种现象,可以在创建数据库或表时,显式指定字符集为UTF8,例如: ```sql CREATE ...

    解析mysql修改为utf8后仍然有乱码的问题

    有时候,即便全局设置已经调整为UTF-8,某些数据表或字段可能由于历史原因仍然使用旧的字符集,比如latin1,这可能导致在存储或读取数据时出现乱码。 为解决这一问题,需要对每个表和字段单独进行检查和调整。可以...

    MySQL写入中文乱码character

    - 如果`character_set_server`默认为`latin1`,并且需要永久更改为`utf8`,则需要在MySQL的安装配置阶段进行设置。具体步骤是在MySQL的安装配置工具`MySQLInstanceConfig.exe`中选择`Character Set`环节,并将...

    MySql数据库导入乱码

    中文网站使用的字符集编码一般是 gb2312、gbk、utf8 等三种,而 PHPmyadmin 的默认字符集是 latin1_swedish_ci,这与我们使用的字符集不同,因此会出现中文乱码的问题。 解决这个问题的关键是正确设置字符集。在...

    mysql中文乱码的解决方法

    针对以上问题,本文将详细介绍如何彻底解决MySQL中的中文乱码问题,并推荐使用`utf8`或`utf8mb4`字符集,因为它们能兼容世界上绝大多数字符。 #### 二、解决步骤 ##### 步骤一:配置my.ini文件 1. **定位my.ini...

    Mysql中文乱码问题完美解决方案

    - **问题描述**:如果MySQL服务端的默认字符集设置为`latin1`等非Unicode编码,则在存储或检索包含中文数据的记录时可能会出现乱码现象。 - **解决方案**: - 修改`my.cnf`或`my.ini`配置文件中的`[mysqld]`部分,...

    Ubuntu 11.10 MySQL客户端Emma 6.0中文乱码解决办法.docx

    接下来,需要修改 emmarc 文件中的 db_encoding 选项,将其从 latin1 改为 utf8。使用 vim 编辑器打开 ~/.emma/emmarc 文件,并将 db_encoding=latin1 一行修改为 db_encoding=utf8。 但是,仅仅修改 emmarc 文件还...

    MySQL数据库系统中文乱码问题及解决方案.pdf

    MySQL数据库系统中文乱码问题及解决方案 MySQL数据库系统中文乱码问题是指在使用MySQL数据库系统时,中文字符在存储、传输和显示过程中出现乱码的问题。这种问题的出现是由于字符集和编码方式的不兼容所致。 在...

    java中MySQL中文乱码问题解决方案

    这些命令将显示当前数据库的编码方式,通常默认的是 latin1 编码方式,但是 latin1 不支持中文编码,所以我们需要将其改为 utf8 编码方式。我们可以使用以下命令来修改编码方式: ``` SET NAMES "UTF8"; ``` 这将...

    mysql 数据库乱码处理

    mysql_query("set names utf8;"); mysql_query(mb_convert_encoding("insert into my_table values('测试');", "utf-8", "gb2312")); ?&gt; ``` 4. 读取数据 在读取数据时,我们需要将 UTF-8 编码转换成 GB2312 编码...

Global site tag (gtag.js) - Google Analytics