`
WessonGao
  • 浏览: 28649 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[转]UTF-8到GBK转码的特殊字符问题(乱码原因)

阅读更多
Unicode字符集现在有超过10万个字符,其BMP部分也有六万多个字符;而GBK字符集只有两万以前多个字符。这样的话,从支持 unicode字符集或者unicode字符集BMP的编码方式,转化到GBK编码的时候,就会有编码落到GBK字符集以外,不能转化成GBK编码。在 java中,转换之后的字符串,这部分字符都变成了’?’。通常这些都是非常生僻的字符,倒是可以不考虑;但是有一个特殊的unicode字符,不在GBK字符集中。却频繁用于xml/html等格式的文件中。这个字符unicode序号为0xA0,utf-8编码结果为C2A0,作用是一个排版空格——普通的ascii空格在xml/html中是被忽略的。大量UTF-编码的网页使用这个字符用作占位的空格。而且似乎浏览器对它的处理方式也不同:IE8浏览器会认得这个空格,firefox3.6简单的把它替换成 。当把一个utf-8编码的网页转成gbk编码时,这个字符就变成讨厌的问号了。

处理方法,就是在字符串以GBK编码写出之前,把这个字符替换掉:

str = str.replace('/u00A0', ' ');

彻底而保险的方法是过滤所有GBK不能表示的字符:

str = str.replaceAll("[^/u4E00-/u9FA5/u3000-/u303F/uFF00-/uFFEF/u0000-/u007F/u201c-/u201d]", " ");
分享到:
评论

相关推荐

    UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_源码.zip

    这个压缩包文件"UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_源码.zip"主要涉及到两个常见的字符编码格式:UTF-8和GBK,以及如何在LabVIEW环境下进行编码转换。LabVIEW是美国国家仪器(NI)开发的一种图形化...

    简单的UTF-8与GBK之间相互转码工具

    这个名为`encoding_p.java`的Java源代码文件,应该包含了一个简单的类或函数,用于实现文件从GBK到UTF-8,以及从UTF-8到GBK的转换。在Java中,我们可以使用`java.nio.charset`包中的`Charset`和`CharsetDecoder`、`...

    GBK与UTF-8转码(C++)

    ### GBK与UTF-8转码(C++) #### 知识点概述 本文将详细介绍如何在Microsoft Foundation Classes (MFC)环境下实现GBK与UTF-8之间的编码转换。该技术适用于那些需要处理不同字符集数据的应用程序开发场景,特别是在...

    转码工具gbk转utf-8,支持批量

    本篇文章将详细解析这两种编码方式以及如何进行转换,特别是针对“转码工具gbk转utf-8,支持批量”这一主题。 首先,GBK(Great Chinese Coding)是一种中文扩展的编码标准,它是GB2312的升级版,包含了更多的汉字...

    utf-8 互转 gb2312 转码

    在处理UTF-8和GB2312之间的转码问题时,我们需要确保正确地转换每个字符的编码,以避免乱码情况的发生。转码过程通常包括两个步骤:解码和编码。首先,我们需要将UTF-8编码的字符串解码为Unicode,然后将Unicode转换...

    批量文件转码工具(支持 GBK,UTF-8 转换)

    在这个场景中,我们讨论的是一个专门用于批量转换的工具,它支持GBK和UTF-8这两种常见的字符编码格式。 GBK编码是GB2312编码的扩展,主要在中国大陆广泛使用,涵盖了大部分简体中文字符。UTF-8则是一种国际通用的...

    关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    - 从ISO-8859-1编码转换到GBK或UTF-8时,可能会出现乱码问题,因为某些ISO-8859-1字符可能无法正确地映射到GBK或UTF-8中: ```java String isoStr = "a?"; byte[] isoBytes = isoStr.getBytes("ISO-8859-1"); ...

    批量转UTF-8/UTF-8-sig/GB18030等批量转CRLF/LF/CR换行符

    所以,你看到的绝大多数转字符集的程序,都是GBK->UTF-8,GBK->BIG5,这种,必须要你提前知道你的文本是什么编码,否则就会乱码。而且,转过一次的文本,再转一次,也会乱码。 我在对比了诸多字符集探测库之后,...

    utf-GBK转码工具

    "utf-GBK转码工具"是一个专门用于解决编码格式不匹配导致的乱码问题的实用程序。UTF-8和GBK是两种常见的汉字编码标准,它们各自有其特点和适用场景。 UTF-8(Unicode Transformation Format - 8 bit)是一种变长的...

    DiscuzX3.4UTF8转GBK后乱码解决方案

    如果数据库原本是UTF-8编码,强行转换为GBK会导致乱码。检查数据库的字符集设置,确保其与论坛配置一致。 3. **手动转码**:资源中包含“手工UTF8转GBK文件”,这些可能是关键的模板文件或配置文件,已经被转换成...

    批量将Java源代码文件的编码从GBK转为UTF-8

    老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息会出现乱码。所以写了个小的方法类,将java文件的编码格式从GBK转UTF-8

    java文件编码GBK转utf8完美解决方案

    idea、Eclipse等项目导入.java文件中文乱码完美解决方案:文件夹下所有GBK编码的.java一键转为utf-8,操作方式:将GBK2UTF8.jar文件考到需要转码项目目录,在当前位置运行控制台,输入命令java -jar GBK2UTF8.jar,...

    批量文件转码工具(支持GBK,UTF-8转换)

    在提供的压缩包文件“批量文件转码工具”中,我们可以期待找到一个能够帮助我们方便快捷地处理GBK和UTF-8编码转换问题的实用工具。这个工具可能包括了选择文件、设置目标编码、开始转换等一系列功能,并且已经有人...

    转码工具,快速实现gbk和utf-8互转

    GBK和UTF-8是两种常见的字符编码方式,它们各有特点,适用于不同的场景。 GBK编码,全称为“汉字内码扩展规范”,是中国大陆广泛使用的汉字编码标准,它是GB2312的扩展,兼容GB2312,包含了大部分简体中文和部分...

    小程序gb2312编码转utf-8,arryBuffer转字符串,含汉字字符串一直乱码

    问题 小程序接收蓝牙设备发送的信息,但是蓝牙设备发送的是gb2312...// 导入gbk转utf-8对照表 import Decoder from "../../utils/Decoder.js" 参考地址:https://blog.csdn.net/v_loading/article/details/118154963

    Delphi中UTF-8,Unicode格式转换

    delphi7调用delphi2009生成的dll文件会出现乱码问题。是unicode的原因 终于找到了UTF-8、Unicode格式转换函数

    使用eclipse插件批量将Java源代码文件的编码从GBK(或其他编码)转为UTF-8

    如果发现有乱码,可能是因为文件原本就存在编码问题,或者某些特殊字符不被UTF-8支持,此时可能需要手动修正。 6. **保存设置**:为了防止后续新增或导入的文件使用默认编码,需要在Eclipse的工作空间设置中全局...

    txt乱码解决处理文本文件转码编码csv器gbk互转utf-8自动批量工具html,js,css,md,json,log,py

    一键自动实现gbk、utf-8互转,不需要任何设置 也支持指定编码方式后,一键转码 强制模式:不支持转码的字符可跳过(目前处理方式是替换成”?”),强制完成转码 支持批量转码 多线程高性能:批量处理方式是多线程...

    Python字符编码转码之GBK,UTF8互转

    在进行GBK和UTF-8之间的转换时,需要注意潜在的乱码问题。GBK编码不包含Unicode中的所有字符,因此当GBK字符串包含GBK不支持的字符时,转换至UTF-8可能会出现错误。反之,UTF-8编码的字符串在转换为GBK时,如果其中...

    utf8 转为 gbk 编码

    可以帮助你把中文转换成UTF-8编码形式,UTF-8编码与中文互转,同时也支持把UTF-8编码过的字符还原成中文,将字符串转换为UTF-8形式,解决在网络传输过程中出现的字符乱码,同时可跨平台使用。

Global site tag (gtag.js) - Google Analytics