加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – StringBuffer类和中文字符编码

发布时间:2020-12-15 04:20:10 所属栏目:Java 来源:网络整理
导读:我写了一个方法来返回一个包含中文字符的字符串. public printChineseMenu(){ StringBuffer buffer; buffer.append(chinese string returned from DB); //chinese characters appear in SQL System.out.println(buffer); //they appear as question marks Pr
我写了一个方法来返回一个包含中文字符的字符串.

public printChineseMenu(){
   StringBuffer buffer;
   buffer.append(chinese string returned from DB);     //chinese characters appear in SQL
   System.out.println(buffer);                         //they appear as question marks
   PrintStream out = new PrintStream(System.out,true,"UTF-8");
   out.println(buffer);                                //chinese characters appear

   return (buffer.toString())
}

是否存在比StringBuffer类更好的存储/返回中文字符串的类型

解决方法

这里的问题不是StringBuffer – 它只是System.out使用的编码.在不使用StringBuffer的情况下直接打印字符串时,您会发现完全相同的行为.

StringBuffer(及其更现代,非线程安全的等价物,StringBuilder,你应该使用它)不关心编码本身 – 它们只使用UTF-16代码单元序列.它们将正确保留所有Unicode数据. String也是如此.

你的方法几乎肯定只返回一个String – 但如果你不需要用字符串做任何“构建”(附加其他部分),那么使用StringBuffer或StringBuilder就没有意义了.如果你确实需要从多个字符串构建reslut字符串,你可以使用它们中的任何一个,并且只返回你已经在做的toString()的结果(尽管返回值周围的括号是无关紧要的;返回不是一种方法).

在字符串数据方面,控制台通常会产生误导.如有疑问,请一次打印一个UTF-16代码单元序列,然后找出其意义.这样就没有编码或不可打印字符成为问题的危险.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读