菜鸟求教,关于new String(str.getBytes(“ISO-8859-1″),”GBK”)的疑问

假如str中含有中文,ISO-8859-1并不能对中文进行编码,那么str.getBytes(“ISO-8859-1″)怎么能获得中文的那部分的字节呢?... 假如str中含有中文,ISO-8859-1并不能对中文进行编码,那么str.getBytes(“ISO-8859-1″)怎么能获得中文的那部分的字节呢? 展开
 我来答
历盆郁7
推荐于2016-10-11 · TA获得超过4277个赞
知道大有可为答主
回答量:1795
采纳率:100%
帮助的人:951万
展开全部
import java.io.UnsupportedEncodingException;

public class $ {
    public static void main(String[] args) {
        String str = "abc我爱你def";

        try {
            for (int i = 0; i < str.length(); i++) {

                String s = str.substring(i, i + 1);
                byte[] b = s.getBytes("GBK");

                //如果是全角(中文),长度是2,如果是半角字母,长度是1
                if (b.length == 2) {
                    System.out.println(s);
                }
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
}
追问
你好,我说的是按ISO-8859-1编码啊,如上:str.getBytes(“ISO-8859-1″)
追答
中文字符不能用ISO-8859-1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yijunsb
2013-08-05
知道答主
回答量:74
采纳率:0%
帮助的人:44.2万
展开全部
任何字符在计算中都是0或1,getBytes()可以理解为重新解码成0和1,在按gbk解码.再回到原点重新解码.不知道说的可还算简单易懂??
追问
str.getBytes(“ISO-8859-1″)的意思是按ISO-8859-1啊,你要说str.getBytes(“GBK″)我能理解,但是ISO-8859-1的话str要是中文怎么办
追答
举个例子,破解加密的,原文是hello,通过iso-8859-1解码出来的假如是keke,一看乱码不对,
1,再通过keke按照iso-8859-1编码变成原文,换一种编码继续解码
2,拿源码换一种编码
getBytes("码表")类似按码表编码,
new String(byte[] bytes,"码表");按码表解密bytes数组
还有,中文的值为负数.你可以试试将char类型的中文字符转成int,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loveCyrusLeo
2013-08-05
知道答主
回答量:5
采纳率:0%
帮助的人:7365
展开全部
通过字符串截取来实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式