2017-05-03 48 views
1

我的html文件開始如下:希伯來文字符不顯示「UTF-8無BOM」唯一「UTF-8」

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
</head> 
אבגד 

如果我編碼我的文檔UTF-8,它的正確顯示瀏覽器。如果我編碼爲UTF-8 without BOM(我的理解是更標準),我得到不尋常的字符。

我在做什麼錯?

+0

Web服務器是否在內容類型頭中指定編碼?這個值是否改變? –

+0

嘗試轉換您的希伯來語文本[here](http://www.online-toolz.com/tools/text-unicode-entities-convertor.php)。我不知道它是否會起作用,但嘗試沒有任何壞處! – Sank6

+0

@JoshLee我在哪裏可以找到? – pppp

回答

1

您的Web服務器正在聲明編碼爲ISO-8859-1,並且瀏覽器正在尊重這一點。具有諷刺意味的是,使用字節順序標記向瀏覽器發送一個較強的信號,實際上編碼必須是UTF-8。 (確切的原因是complicated and boring。)

修復您的Web服務器取決於服務器是什麼。如果這是由Apache httpd提供的磁盤上的靜態資源,那麼類似AddCharset UTF-8 .html的東西將添加標頭。

如果此資源是動態提供的,那麼您應確保在生成響應時添加正確的HTTP標頭,例如用於Python基本http服務器的self.send_header('Content-Type', 'text/html; charset=utf-8')

+0

謝謝。我還應該在html中包含字符集還是不必要的冗餘? – pppp

+0

根據https://html.spec.whatwg.org/multipage/semantics.html#character-encoding-declaration,需要一個。使用兩者可能被認爲是多餘的,但可能允許您的文本編輯器使用正確的編碼。 –