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;
}
分享到:
相关推荐
例如,如果数据库是UTF-8,JSP是GBK,可以使用 `new String(rs.getBytes(1),"UTF-8")` 将数据库中的UTF-8字节流转换为GBK字符串。反之,如果JSP是UTF-8,数据库是GBK,需要先将GBK字符串转换为字节流,然后再次转换...
- 从ISO-8859-1编码转换到GBK或UTF-8时,可能会出现乱码问题,因为某些ISO-8859-1字符可能无法正确地映射到GBK或UTF-8中: ```java String isoStr = "a?"; byte[] isoBytes = isoStr.getBytes("ISO-8859-1"); ...
BOM(Unicode字符集带BOM标记)、UTF-8、CP936(简体中文Windows编码)、GB18030(简体中文国标编码)、BIG5(繁体中文编码)、EUC-JP(日文编码)、EUC-KR(韩文编码)和Latin1(西欧语言编码)来解码文件,直至...
此时,将UTF-8的中文字符串转换为Latin1,可以避免乱码问题,尽管可能会牺牲部分字符的正确显示。 总的来说,UTF8_TO_HEX涉及到的关键技术点包括: 1. 字符编码:UTF-8与Latin1两种编码标准的理解和使用。 2. 编码...
本文将针对标题中的几种常见编码格式(GBK、ISO 8859-1、UTF-8)以及如何解决由这些编码方式引发的乱码问题进行深入探讨。 #### 一、编码概述 1. **GBK编码**:GBK是GB2312标准的扩展,支持简体中文,是Microsoft ...
$fileType = mb_detect_encoding($data, array('UTF-8', 'GBK', 'LATIN1', 'BIG5')); ``` 上述代码尝试检测`$data`字符串的编码,数组中列出了可能的编码类型。如果检测到的编码不是UTF-8,我们就需要进行转换。`mb...
- 确保所有相关应用程序(如数据库连接工具、网站代码等)都设置为使用UTF-8编码,否则仍可能出现乱码问题。 5. **常见问题**: - 如果在转换过程中遇到乱码,可能是由于编码设置不正确或中间环节出现问题。检查...
UTF-8 是目前最适合的字符集,能够很好地支持多种语言的字符。使用 UTF-8 字符集可以使得数据迁移变得更加顺利。 创建数据库时,可以使用以下命令: ```sql CREATE DATABASE my_db default charset utf8 COLLATE ...
如果一个UTF-8编码的字符串被保存为LATIN1文件,将会出现乱码。同样,LATIN1编码的文件也无法完整转换为UTF-8文件,因为后者无法表示大于255的字符。 #### MySQL字符集设置 MySQL提供了一系列系统变量来管理字符集...
MYSQL 使用 UTF8 中文乱码处理方法 MYSQL 使用 UTF8 中文乱码处理方法是指在使用 MYSQL 数据库时,...MYSQL 使用 UTF8 中文乱码处理方法需要我们从前端到后端都使用 UTF-8 编码格式,确保中文字符的正确存贮和传输。
MySQL数据库在处理字符编码时,经常涉及到不同的字符集转换,如latin1到gbk,gbk到utf8,甚至gbk到big5等。这些转换在处理多语言数据或者迁移数据库时尤其重要,因为不同的字符集支持不同的字符范围,比如latin1主要...
### Linux乱码问题解决方案 #### 一、理解乱码产生的原因 ... set fileencodings=utf-8,ucs-bom,gbk,latin1 ``` 通过以上步骤,可以有效地解决Linux环境下的乱码问题,无论是文件内容还是文件名,都能得到妥善处理。
1. **UTF-8**:一种可变长度的Unicode编码方式,广泛用于Web页面和文件存储。 2. **ISO-8859-1**:也称为Latin1,主要用于西欧语言的编码。 3. **GBK**:中文简体字符集编码标准之一,在中国大陆非常常用。 4. **GB...
如果这三个变量的值不同,例如 latin1 和 utf-8,那么转换过程就会出问题,导致乱码。 SET NAMES UTF8 语句的作用是将这三个变量的值临时设置为 utf-8,从而解决乱码问题。但是,这个设置只是一时的,MySQL 重启后...
然而,如果你的MySQL数据库在创建时选择了UTF-8编码,但在实际存储数据时,Mantis却使用了latin1(ISO-8859-1)编码,这就可能导致中文字符无法正确显示,从而产生乱码。 为了解决这个问题,你需要按照以下步骤操作...
例如,当一个使用ISO8859-1编码的文本被误读为UTF-8时,可能会出现乱码。反之,如果一个UTF-8编码的文本被当作GBK处理,也可能导致类似问题。因此,理解各种字符集的特性和范围,以及如何在它们之间转换,是开发跨...
- **转换文件名编码**:例如,将所有`.mp3`文件名从GBK编码转换为UTF-8编码,可以使用`convmv -f GBK -t UTF-8 *.mp3`命令。默认情况下,Convmv仅显示转换效果而不实际执行转换操作。要实际执行转换,需要加上`--no...
mysql默认的编码是Latin1是I-8859-1的别名,但Latin1是不支持汉字的,所以要将其改为UTF-8或GBK 1.关闭mysql服务器,这个很重要。 2.通过my.ini设置mysql数据库的编码 在mysql数据库的安装根目录下找到my.ini,例:C...
解决MySQL连接时中文显示乱码的问题,关键在于确保数据库、连接参数以及应用程序内部各环节的字符集设置保持一致,并采用适合中文字符的编码方式,如UTF-8。通过上述步骤,可以有效避免中文乱码现象,保证数据的正确...
因此,在遇到乱码问题时,简单地将 UTF-8 修改为 GBK 并不能解决问题,反而可能造成更多的编码不一致问题。 #### 二、解决方案 解决 MySQL 中文乱码问题的方法主要有以下几种: 1. **在 JDBC 连接字符串中添加...