`

中文乱码 mysql数据库latin1 乱码 latin1 转 UTF-8

阅读更多
同步数据库 ,从A数据库(编码为latin1)取出数据,数据为  刘广州 ,传到B数据库(编码为UTF8),同步过程中 java 对 刘广州 数据转成UTF8,以让其中文正常显示。

Mysql 的latin1 不等于标准的latin1(iso-8859-1) 和cp1252,比iso-8859-1多了0x80-0x9f字符,比cp1252多了0x81,0x8d,0x8f,0x90,0x9d 一共5个字符。

这样在Java中,如果使用标准的iso-8859-1或者cp1252解码可能出现乱码。
s.getBytes("iso-8859-1") 或者 s.getBytes("cp1252"); 所以用以下方法解决。


public String convertCharset(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.
                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;
    }

http://dev.mysql.com/doc/refman/5.0/en/charset-we-sets.html
http://www.oschina.net/question/2795_74288
分享到:
评论

相关推荐

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

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

    mysql 数据库乱码处理

    MySQL 数据库乱码处理 MySQL 数据库字符乱码问题是数据库管理中常见的问题之一。造成乱码的原因多种多样,可能是由于数据库字符集的不正确设置、数据导入时的编码错误等。下面我们将详细讨论 MySQL 数据库乱码处理...

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

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

    如何解决MYSQL数据库中文乱码问题-.docx

    MYSQL数据库支持多种字符集,包括gbk、utf8、latin1等。在创建数据库时,可以使用CREATE DATABASE语句指定字符集类型,例如: CREATE DATABASE haichen CHARACTER SET gbk COLLATE gbk_chinese_ci 这里,gbk是指...

    MySql数据库导入乱码

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

    解决连接mysql中文显示乱码

    解决MySQL连接时中文显示乱码的问题,关键在于确保数据库、连接参数以及应用程序内部各环节的字符集设置保持一致,并采用适合中文字符的编码方式,如UTF-8。通过上述步骤,可以有效避免中文乱码现象,保证数据的正确...

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

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

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

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

    MYSQL使用UTF8中文乱码处理方法.docx

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

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

    当从Node.js向latin1编码的MySQL数据库插入UTF-8编码的中文字符时,会出现乱码。 3. **解决步骤**: - **MySQL配置**:修改MySQL的配置文件`my.cnf`,将全局字符集设置为UTF-8。在`[mysqld]`、`[mysql]`、`[mysql....

    MySQL GBK→UTF-8编码转换

    MySQL数据库的GBK到UTF-8编码转换是一个常见的需求,特别是在处理多语言内容或者需要与不同系统集成时。GBK编码是中国大陆广泛使用的汉字编码标准,而UTF-8是一种更通用的Unicode编码,支持世界上几乎所有的字符集。...

    mysql中文乱码问题

    如果数据库的编码方式不是 utf8, 那么在插入中文数据时就会出现乱码问题。 解决 MySQL 中文乱码问题的方法 解决 MySQL 中文乱码问题的方法其实很简单。首先,我们需要检查 MySQL 服务器的编码方式,可以使用...

    Mysql数据库编码问题 (修改数据库,表,字段编码为utf8)

    在MySQL中,可以使用以下命令创建一个名为`my_db`的数据库,并设置其默认字符集为UTF-8和排序规则`utf8_general_ci`: ```sql CREATE DATABASE IF NOT EXISTS my_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;...

    Mysql插入中文乱码问题解决

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

    数据库-MySQL中文显示问题.docx

    在创建 MySQL 数据库中的表时,如果没有设置合适的编码方式,可能会导致数据库中的中文出现乱码,影响查询时的显示效果。解决这个问题的关键是正确地设置 MySQL 的编码方式。 MySQL 编码方式的重要性 在 MySQL ...

Global site tag (gtag.js) - Google Analytics