laoshi367laoshi 2009-01-14 16:26
浏览 212
已采纳

字符串乱码问题

给定字符串 String aa="中国人??"; 问号部分是一个生僻字 宋体时候不显示
现在 想获取 每个字的 unicode 也包括 乱码?? 的 unicode

最后 在 方正超大字符集下显示出来 这个字符串

怎么做?谢谢
[b]问题补充:[/b]
我没怎么说明白

现在我详细说一下问题 希望大家给些建议

首先一个xml 我去解析 用dom4j (打开xml要是不选方正超大字符集呢生僻字看到的可能就是个四方块,或者啥也没有

把这个汉字 都存在一个 字符串里了

swing里做显示 竖排那种显示 不是横排地 我知道头一个字的坐标 剩下的 就是 循环 x坐标不变 y坐标增加

现在这个 汉字字符串里有 个生僻字 用方正超大字符集显示sefont (循环完毕)显示呢

是 例如 这样:







变成问号了

要是 不做循环str.length()
一次 drawstring 这个字符串 就能显示 但不是竖排地

说地有点多 大家尽量理解吧

解决了多给分!谢谢

  • 写回答

9条回答

  • 不良校长 2009-01-14 22:43
    关注

    想了想, 还是给你更详细的. 使用Character对象控制字符:
    16位以外的字符, 需要你做特殊判断。 char 并不是一个完整的UNICODE实现。 如果要使用Surrogate区域的字符, 也就是16位以上的字符, 需要用2个char来表示你的一个Surrogate字符, 你要这么写程序:
    if(Character.isSurrogatePair(c1, c2)){
    int i = Character.toCodePoint(c1, c2);
    //begin to display codepoint
    //你可以这么做
    String s = new String(Character.toChars(i));
    system.out.println(s);
    }
    我没有大字符集字体, 无法测试, 但是原理就这样。
    如何用codepoint显示一个字符, 我也不是很清楚, 等我知道了告诉你吧。 我用了一个比较笨的办法。 重新把一个16X2字节的字符包成一个字符string。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿