如何在Java中将Unicode字符转换为正确的语言字符?

时间:2012-03-26 01:59:34

标签: java unicode locale netbeans-7

我在数据库中有一个字段,其中包含varchar字段,我在其中存储Thai Sentence(以Unicode的形式)。

我需要的是将Unicode字符解析为正确显示泰语字符的字符串。

我的代码,用于在Locale对象的帮助下显示泰语字符 运用 Oracle Docs! 如下。

  Locale thaiLocale_ =  new Locale("th", "TH", "TH");
  NumberFormat nf = NumberFormat.getNumberInstance(thaiLocale_);
  double theDig_Doub =573.34
  String outputString = new String();
  outputString =nf.format(theDig_Doub);

我需要显示泰语字符序列的代码。

4 个答案:

答案 0 :(得分:1)

首先需要确保从数据库中获取的字符串正确地以unicode thai字符表示。

因为数据库存储/检索机制可能已损坏您的泰语字符串。

在确保从数据库获取的thi字符的格式正确后,您只需使用以下代码将字符解析为浮点数。

NumberFormat thai = NumberFormat.getNumberInstance(new Locale("th", "TH", "TH"));

String thaiText = db.getValue();// You need to put your db fetching logic here
double number = thai.parse(thaiText).doubleValue();

但在此之前,请确保泰语字符正确地从数据库中返回。

答案 1 :(得分:0)

您已经拥有通过特定区域设置将double转换为字符串的代码。您可以通过调用parse()对象上的NumberFormat函数来实现相反的操作(将字符串转换为double):

double num = nf.parse(outputString).doubleValue();

您需要在doubleValue()的结果上致电parse(),因为它会直接返回Number而不是double

在调用ParseException时,您需要准备好捕获java.text.ParseExceptionparse()),因为传入的字符串可能不是有效数字(至少到{{} 1}}知道)。

上面的代码使用了问题代码中声明的parse变量。

答案 2 :(得分:0)

以下代码适用于我在NetBeans中显示泰语。

     String strThai ="";
    if (rs.getString(i) != null )
        strThai= new String(rs.getString(i).getBytes("ISO8859_1"),"TIS-620");

其中rs是数据库中的ResultSet。

答案 3 :(得分:0)

public class Unifun {


    public static String convertunitostring(String s) {

        return StringEscapeUtils.unescapeJava(s);
    }

    public static void main(String args[]) {
        System.out.println(convertunitostring("\ufeff\u0110\u1eaf\u0063\u0020\u004c\u1eaf\u0063"));
    }

}

注意:在类路径中添加Apache commons lang jar。