编码 GBK 的不可映射字符

 

一般做项目公司都会统一要求文件编码类型,很多为了实现应用国际化和本地化和更高的性能,而选用UTF-8而非GBK。

但在开发过程中我们都用的是IDE,只要更改了配置就不用操心了,但有时我们也会用命令行来编译java文件,这种时候就会出现warning:编码 GBK 的不可映射字符。这时大家应该想到自己的系统是不是中文的windows(废话!),而我们用的命令行敲的java命令默认是用本机的编码格式,所以才出现了GBK这个字眼。

 

解决这个问题当然是指定在编译时的编码格式(您总不会因此换英文系统吧。。。)

方法:

加参数-encoding UTF-8

例如:javac -encodig UTF-8 HelloWorld.java

 

UTF-8简介:

是 UNICODE 的一种变长字符编码,即 RFC 3629。这种大字符集可以解决多种语言文本显示问题,从而实现应用国际化和本地化。UTF-8 编码可以通过屏蔽位和移位操作快速读写,排序更加容易。由于UTF-8 是字节顺序无关的,它的字节顺序在所有系统中都是一样的。因此 UTF-8 具有更高的性能。

原文地址:http://blog.sina.com.cn/s/blog_74a86d5201019ka8.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当在使用GBK编码时遇到不可映射字符(例如某些特殊的符号或不常用的汉字),可以尝试以下解决方法: 1. 使用其他编码方式:可以尝试使用UTF-8编码或者其他支持更广泛字符集的编码方式来解决问题。UTF-8是目前最常用的编码方式之一,可以支持几乎所有的字符,包括所有的Unicode字符。 2. 特殊字符转义:如果遇到的是一些特殊字符,可以尝试使用其对应的转义字符来代替。例如,对于一些不可显示的控制字符,可以使用反斜杠加上对应的ASCII码来表示。 3. 使用Unicode编码:将GB2312或GBK编码的文本转换为Unicode编码,然后再进行处理。可以使用一些转换工具或者库来实现编码的转换。 4. 忽略不可映射字符:如果不可映射字符对于项目或应用来说并不重要,可以选择忽略这些字符。可以通过判断字符是否可映射来进行处理,将不可映射字符过滤或者替换为其他字符。 5. 自定义映射表:如果对于不可映射字符有特定要求,可以通过自定义映射表的方式来解决。可以将不可映射字符替换为其他合适的字符或者标记,以便后续处理或者显示。 总的来说,针对GBK编码不可映射字符问题,可以根据具体情况选择适合的解决方法。最好的方式是尽量使用支持更广泛字符集的编码方式,如UTF-8,以避免不可映射字符带来的问题。 ### 回答2: GBK编码是中国的国家标准编码,它包含了大量的汉字及其他字符。然而,有时候我们会遇到一些不可映射字符,即GBK编码中没有相应的字符表示。这对于使用GBK编码的系统来说可能会导致一些问题,例如无法正常显示或处理这些字符。 解决这个问题的方法有以下几种: 1. 转换编码:将GBK编码字符串转换成其他编码,例如UTF-8。UTF-8是一种更为通用的编码方式,它可以表示世界上几乎所有的字符。通过将不可映射字符转换成其他编码,可以避免显示和处理的问题。 2. 使用转义字符:如果无法进行编码转换,可以尝试使用转义字符不可映射字符替换成其他字符字符串。例如,使用 "\uXXXX" 的形式表示一个Unicode字符,其中 "XXXX" 是该字符的十六进制编码。这样,可以用Unicode字符替代不可映射字符。 3. 使用定制的字符集:如果需要处理特殊的字符,可以考虑使用自定义的字符集进行编码。这种方法需要确保在所有使用该字符集的系统之间达成一致,以避免出现不一致的问题。 4. 转换为图片或其他非文字形式:如果无法找到其他解决方法,可以将不可映射字符转换成图片或其他非文字形式进行展示或处理。这样可以绕过字符编码的限制,但同时也会导致一些额外的复杂性和成本。 综上所述,处理GBK编码中的不可映射字符可以通过转换编码、使用转义字符、使用定制字符集或转换为其他形式来解决。根据具体情况选择合适的解决方法,以确保能够正常显示和处理这些字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值