[英]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.