JAVA UTF-8文本再次转UTF-8就会乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA UTF-8文本再次转UTF-8就会乱码相关的知识,希望对你有一定的参考价值。

求助:

我现在将一些文本批量转成UTF-8编码,有些文本是GBK编码的,有些是UTF-8编码的(有些有BOM码,有些没有),我在转码时判断是否为UTF-8编码的文本,假如不是就对文本转码。
现在的问题是:在判断文本是够是UTF-8编码时,是通过BOM码判断的,那些没有BOM码的UTF-8文本就会再次被转码,会被转成乱码。
参考代码:http://blog.csdn.net/johnnycode/article/details/24628547

参考技术A 这个代码哪里是将UTF-8转成UTF-8,是将GBK转成UTF-8。

如果转换的文本不是GBK的,当然会乱码。
参考技术B 需要先用 iso-8859-1 把代码 打乱! 然后 再用 utf-8 转换 参考技术C 会这样吗?这个问题头一次听说。

中文乱码处理

01 输出中文乱码

02json_encode()转义成json入库,默认把中文转成unicode

03

二次开发的php文件或者html文件中.中文编码不是utf-8的,选择txt文本或者editplus打开,另存为utf-8.然后修改代码中设置的编码为utf-8.

编译的时候,先查看文本的编码.然后按照编码格式.来显示或执行

如果文本的编码为gb2312或者gbk.使用phpstrom打开有中文乱码.需要看右下角.是否以utf-8格式读取并显示

 

 

=========== mysql 中文乱码 cmd

查看编码格式是否为gbk. cmd面板默认为gbk格式显示.

show variables like ‘%char%‘;   //查看变量  模糊匹配 mysql中所有变量设置

set names gbk;   //设置客户端字符集 ,以gbk读取数据.返回给cmd面板

如果没有设置客户端编码为gbk. 搜索中文匹配是不会有结果的

 

 

============

header("Content-type:text/html;charset=utf-8");

echo ‘<pre>‘;

echo ‘<meta http-equiv="Content-type" content="text/html:charset=utf-8">‘;

var_dump($data);

 

 

===========json数据中文直接入库,无需转成unicode

function json_encode_ex($value)
{
if (version_compare(PHP_VERSION,‘5.4.0‘,‘<‘))  
{
$str = json_encode($value);
$str = preg_replace_callback(
  "#\\\u([0-9a-f]{4})#i",
function($matchs)
{
  return iconv(‘UCS-2BE‘, ‘UTF-8‘, pack(‘H4‘, $matchs[1]));
},
  $str
);
  return $str;
}
else
{
    return json_encode($value, JSON_UNESCAPED_UNICODE);
}
}

以上是关于JAVA UTF-8文本再次转UTF-8就会乱码的主要内容,如果未能解决你的问题,请参考以下文章

java 逐行读取txt文本如何解决中文乱码

再谈java乱码:GBK和UTF-8互转尾部乱码问题分析

IDEA的乱码与file.encoding = UTF-8

IDEA的乱码与file.encoding = UTF-8

锟斤拷?UTF-8与GBK互转乱码问题

怎么辨别文本文档的编码?