锁定老帖子 主题:上海华为的一次面试经历
精华帖 (0) :: 良好帖 (1) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-10
java 里有这样的用法吗?j |
|
返回顶楼 | |
发表时间:2007-09-10
抛出异常的爱 写道 应该 是8 啊?
我 a b c 汉 d e f 一个char可以放下一个汉字。。。 是byte,byte应该是10,char确实是8,可能是我操作系统的问题 |
|
返回顶楼 | |
发表时间:2007-09-11
那道截取字符串的题目做的对不对啊?题目要求按字节截取字符串,"我ABC"按4个字节截取出"我AB",截取的字符串总共有4个字节。是我理解错了吗?
|
|
返回顶楼 | |
发表时间:2007-09-12
抛出异常的爱 写道 应该 是8 啊?
我 a b c 汉 d e f 一个char可以放下一个汉字。。。 他用的是getBytes(),不是toCharArray(),不应该是8,是10 不知道他的机器运行结果为什么是8。 |
|
返回顶楼 | |
发表时间:2007-09-12
沒有指定編碼
|
|
返回顶楼 | |
发表时间:2007-09-12
getBytes(),默认就是用项目的编码。他已经说明是"UTF-8"了。不需要指明编码
|
|
返回顶楼 | |
发表时间:2007-09-12
liangwj72 写道 抛出异常的爱 写道 应该 是8 啊?
我 a b c 汉 d e f 一个char可以放下一个汉字。。。 他用的是getBytes(),不是toCharArray(),不应该是8,是10 不知道他的机器运行结果为什么是8。 我来解释一下,首先确定是说的getBytes(),以及由此的一些测试 在这个讨论中的字符集有两种情况: (1).java文件编码的字符集,默认是utf8,所以你可以用中文来命名类或者变量等等。metaphy所说的“代码编码”其实是指的这个,java文件的编码方式,仅此而已。所有语言平台下的这个默认字符集都是utf8,不管中文或者英文平台。 (2)j2se里面encode和decode使用的默认字符集,这个和jdk(jre?os?)有关,比如metaphy说的他是英文os,我猜想他的jdk也是英文的,encode和decode使用的默认字符集就是iso-8859-1(虽然他的java文件编码方式为utf8),在这个字符集里是不会认识中文的,因此getBytes()出来会是8位,中文和英文统一对待,原因就是iso-8859-1是西欧的,不会遇到用中文字符集编码解码。getBytes方法可以有一个字符串的参数,这个参数就是字符集,如果没有参数,那么默认使用平台字符集,在英文os下,有可能就是iso-8859-1了。 如果在中文平台下,由上面提到第2点知道getBytes()调用了中文平台的默认编解码字符集gbk,实际上相当于getBytes("gbk"),关于怎样构造字,一个汉字几位的问题暂不讨论,可以先明确的说gbk一个汉字两位,utf8一个汉字3位,具体原因可以搜索论坛上一个朋友写的东西(名字忘了,sorry),因此在中文平台下getBytes()或者getBytes("gbk")出来后是10位;同理getBytes("utf8")是12位。 希望有所帮助。 |
|
返回顶楼 | |
发表时间:2007-09-12
默認的不是什麽項目編碼 (也可能是俺孤陋了 還真是頭一次聽到)
|
|
返回顶楼 | |
发表时间:2007-09-12
ddandyy 写道 默認的不是什麽項目編碼 (也可能是俺孤陋了 還真是頭一次聽到)
默认是说的什么默认呢? 如果说java文件保存的编码默认,那么是utf8,与语言平台无关 如果说java里面用于encode和decode的编码,比如getBytes(),默认是语言平台默认的,中文平台位gbk,英文平台为iso-8859-1 上面两点一定不要混为一谈了 |
|
返回顶楼 | |
发表时间:2007-09-12
另外在j2ee里面对应的encode和decode又不一样,因为jsr规范的原因,比如servlet容器,要求的默认编码是iso-8859-1,经常看到tomcat乱码等等,就是这里引起的,但另一方面servlet api提供了相应的更改编码的方式,因此这些问题都可以很好解决
|
|
返回顶楼 | |