`

乱码 latin1 转 UTF-8

阅读更多
Mysql 的latin1 不等于标准的latin1(iso-8859-1) 和cp1252,比iso-8859-1多了0x80-0x9f字符,比cp1252多了0x81,0x8d,0x8f,0x90,0x9d 一共5个字符。
http://dev.mysql.com/doc/refman/5.0/en/charset-we-sets.html
这样在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;
    }
分享到:
评论

相关推荐

    php自动识别文件编码并转换为UTF-8的方法

    PHP转换文件编码是一个比较简单的事情,但是在开发中...empty($data) ){ $fileType = mb_detect_encoding($data , array(‘UTF-8′,’GBK’,’LATIN1′,’BIG5′)) ; if( $fileType != ‘UTF-8’){ $data = mb_conve

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

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

    phpMyAdmin2.6以上版本数据乱码问题

    1、找到有"zh-gb2312"的那一行,把'zh-gb2312' 改成 'zh-gb2312-utf-8' 为什么这样加?那是因为服务器会把没有"-utf-8"的语言过滤掉,在libraries/database_interface.lib.php 第168行,根据英文说:“为了 防止...

    vimrc带详细说明配置文件and插件包

    set fencs=usc-bom,utf-8,gb18030,gbk,gb2312,big5,cp936,euc-jp,euc-kr,latin1, set nocompatible source $vimruntime/vimrc_example.vim source $vimruntime/mswin.vim behave mswin "切换提示语言(解决调试窗口...

    gvim配置文件gvimrc

    set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 set encoding=utf-8 set termencoding=cp936 language messages zh_CN.UTF-8 "解决输出乱码 source $VIMRUNTIME/delmenu.vim "解决菜单...

    jquery.ajax的url中传递中文乱码问题的解决方法

    JQuery ...这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1 ISO8859-1,通常叫做...最终指需要修改JQuery的代码,显式声明contentType使用utf-8字符集,即可解决GB2312中文传递的问题。 1. 修改

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

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

    phpmyadmin补丁2.11.9.4/2.11.8.1

    它虽然已经提供了对中文的支持,但是,仅限于字段编码为:utf-8(utf8)、gbk、gb2312。对其它的编码,使用phpmyadmin进行查看时会显示为乱码。  虽然对于新的项目我们会尽量使用上面三种数据编码,但仍有一些旧项目...

    win7下mysql6.x出现中文乱码的完美解决方法

    2、修改mysql安装目录下的my,ini,将default-character-set=latin改为default-character-set=gbk(有几个改几个,改成utf-8我不知道可不可以) 3、将刚刚修改好的my.ini复制到C:\Windows目录下,覆盖掉。 4、命令行...

    phpMyAdmin修正补丁3.1.1

    它虽然已经提供了对中文的支持,但是,仅限于字段编码为:utf-8(utf8)、gbk、gb2312。对其它的编码,使用phpmyadmin进行查看时会显示为乱码。  虽然对于新的项目我们会尽量使用上面三种数据编码,但仍有一些旧项目...

    phpMyAdmin修正补丁3.1.2

    它虽然已经提供了对中文的支持,但是,仅限于字段编码为:utf-8(utf8)、gbk、gb2312。对其它的编码,使用phpmyadmin进行查看时会显示为乱码。  虽然对于新的项目我们会尽量使用上面三种数据编码,但仍有一些旧项目...

    mysql字符集和数据库引擎修改方法分享

    解决的方法是: 在phpmyadmin首页的右边有个Language选项,把默认的中文 – Chinese simplified-gb2312改成 中文 – Chinese simplified,则左边的MySQL 字符集会变成UTF-8 Unicode (utf8) ,乱码问题得到解决!...

    mysql乱码问题解决

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

    mysql 数据库乱码问题解决

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

    IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别实例分析

    2.php 文件编码格式为 UTF-8,浏览器显示编码为 : UTF-8 3.我的页面显示方式为两种: 一)页面加载时自动加载,每隔一秒刷新一次 二)点击一个分机组名称时,获得该分机组的相应的成员卡片信息 4.对于第一种情

    mysql 中文乱码 解决方法集锦

    第一个方法: MySQL 4.1 中文乱码的问题 最近要将 MySQL 4.0 升级到 MySQL 4.1 ,发现了中文乱码的问题,希望以下见解对大家有用。... 可是 MySQL 4.1 的系统编码是预设用 UTF-8 的,当要 restore My

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

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

    MySQL从命令行导入SQL脚本时出现中文乱码的解决方法

    解决方法1:在MySql安装目录下找到my.ini,将[mysql]下的default-character-set=latin1改为default-character-set=utf8,保存,然后重启MySql服务就可以从命令行成功导入了。缺点,因为部署的话,可能

    mysqlmysql-5.0.18-win32

    安装了此软件后可以安装我上传过的mysql图形化工具,就...编程时如果出现乱码应该查看一下C:\Program Files\MySQL\MySQL Server 5.0目录下的my.ini文件,在文件中查找“latin”,改为"utf_8",重新运行mysql服务即可。

Global site tag (gtag.js) - Google Analytics