繁体   English   中英

如何在java中从编码中查找语言环境

[英]How to find locale from encoding in java

我有一个组件应该能够解析和处理用户给出的任何xml文件。 xml文件可以包含时间戳值,例如“2012年3月12日下午05:00”。 因此,用户必须提供SimpleDataFormat可接受的Timestamp模式。 我们使用模式和SimpleDateFormat来解析Timestamp值,如下所示:

 SimpleDateFormat sdt = new SimpleDateFormat(inputTimestampPattern);
 Date date = sdt.parse(inputTimestampString);

但是我们正在获得一个特定文件的ParseException,如下所示。

java.text.ParseException:Unparseable date:“04-6 \\ u57d6 -12 18.54:57.169000 \\ u548c \\ u601c”

当我们在日语语言环境中使用包含中文语言环境中的时间戳模式的输入文件运行组件时,我们遇到了此异常。 JVM的语言环境是日语,因此SimpleDateFormat尝试解析假定日语语言环境并失败的时间戳字符串。 xml文件具有如下编码信息:

  <?xml version="1.0" encoding="gbk"?>

如果我们以某种方式从编码值中找出Locale,那么我们可以创建Locale敏感的SimpleDateFormat对象来解决这个问题。 所以我的问题是我们可以从编码中获取Locale信息吗? 我不是要求确切的Locale。 即使有一种方法可以获得一小组可能的Locales给定一个编码,我可以尝试所有这些,直到其中一个没有抛出异常。 Java中是否有任何API有帮助?

或者有没有更好的方法来解决这个问题?

如果编码将在XML的第一行中设置,您可以首先读取文件,只获取第一行,因此将捕获“encoding =”gbk“”或其他任何内容。 并使用Switch-case设置程序中的编码,或者您想要的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM