【问题标题】:Converting to utf-8 in java在java中转换为utf-8
【发布时间】:2012-03-26 01:40:41
【问题描述】:

我只有字符串\u0130smail,我想把它转换成 发送邮件并转换

  \u0130 --> İ   
  \u00E7 --> ç

我试过了

String str = "\u0130smail";
sysout(str); 

它确实有效,但每当我从数据库或互联网获取字符串 "\u0130smail" 时,它都不会给出正确的结果。

static String deneme(String string){
    String string2 = null;

    try {
        byte[] utf8 = string.getBytes("UTF-8");
        string2 = new String(utf8, "UTF-8");
    } catch (UnsupportedEncodingException e) {
    }
    return string2;
}

也没有用。

【问题讨论】:

  • 这样做:byte[] utf8 = string.getBytes("UTF-8"); string2 = new String(utf8, "UTF-8"); 不执行任何操作。你是如何建立你的string 论点的?
  • 你得到什么作为输出?这对确定问题非常有帮助。

标签: java unicode utf-8 normalization unicode-normalization


【解决方案1】:

将现有字符串转换为字节然后再转换回来对您没有帮助。您需要查看字符串中的确切字符 - 并弄清楚 如何 获得它们。

我建议你打印出字符串中每个字符的整数值as 一个整数(最好是十六进制),以找出你得到的确切内容......然后追溯它尽你所能,找出问题所在。

【讨论】:

    【解决方案2】:

    字符串"\u0130smail""İsmail" 从语言的角度来看是完全一样的。如果你的意思是你得到一个字符串"\\u0130smail"(请注意我已经转义了反斜杠),那么你将不得不找到 unicode 代码点的模式并将它们转换为普通的 unicode 字母或只打印数字,无论你需要。在这种情况下,正则表达式可以为您提供帮助。

    【讨论】:

      猜你喜欢
      • 2021-11-20
      • 2015-11-22
      • 2017-09-24
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 2010-11-19
      • 2010-11-30
      • 2013-09-07
      相关资源
      最近更新 更多