2011-06-13 23 views
1

如何在Java中查找URL是UTF-8還是UTF-16?如何找到url是utf-8還是utf-16

例如,this URL是UTF-8。

+1

服務器響應應該在Content-Type頭字段中包含一個名爲charset的子字段。包含的值包括UTF-8,UTF-16等。 – 2011-06-13 16:14:52

+3

URL是ASCII碼。 – 2011-06-13 16:15:19

+2

@jleedev:如果你讀到OP的字面意思之外,我認爲它們實際上是指由URL檢索的內容,而不是URL本身。 :-) – 2011-06-13 16:15:59

回答

3

XML消息指定編碼類型。

<?xml version="1.0" encoding="UTF-8"?> 

<?xml version="1.0" encoding="UTF-16"?> 
+0

是的。你是對的。但是,我需要在單個代碼中解析utf-8和utf -16 xml文件?怎麼做 ?.. – 2011-06-14 03:42:26

+0

如果您使用XML解析器,它將爲您執行編碼。如果你正在做自己的解析器,你需要閱讀這一行並檢查編碼。如果你能夠編寫自己的XML解析器,這應該是微不足道的。 – 2011-06-14 07:34:38

0

如在其他的答案所描述的,有兩種方法用於指定一個文件,所述編碼通過HTTP返回:

  • Content-Type報頭字段的一部分
  • 的XML內部編碼聲明文件(例如<?xml version="1.0" encoding="UTF-8"?>

但是,這些都是可選的。根據HTTP規範,未指定編碼默認爲ISO 8859-1。對於XML文件,如果該文件提供了HTTP Content-Typ標頭,則這是正確的編碼。否則,默認值爲UTF-8或UTF-16(取決於是否存在byte order mark(BOM)。

因此,如果您知道內容使用UTF-8或UTF-16,請檢查BOM。如果它的存在,它是UTF-16,否則UTF-8。一個解釋見如http://www.opentag.com/xfaq_enc.htm#enc_default

0

我假設你通過這個URL地址資源的表示的編碼後是。

給定URI處的資源可能有多個表示,因此,除非實際獲得,否則您通常無法事先真正瞭解所獲得表示的內容類型和編碼。使用HTTP HEAD方法可以給你一些關於服務器願意提供哪些內容類型和編碼的指示。這也會根據客戶發送的標題而有所不同(Accept: ...)。 如果您想了解更多信息,請查看「內容類型協商」。

做一個HEADGET請求應該返回一個Content-Type頭與適當的charset字段。如果在此服務器上沒有發生內容類型協商(通常是這種情況),則這不會發生變化。

如果您在Java中使用HttpURLConnection,則可以使用getHeaderFieldKeygetHeaderField查看標頭。

相關問題