我在数据库中有一个字段,其中包含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);
我需要显示泰语字符序列的代码。
答案 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.ParseException
(parse()
),因为传入的字符串可能不是有效数字(至少到{{} 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。