2017-05-03 5 views
1

次のように私のHTML文書が開始されます。ヘブライ語の文字は「BOMなしUTF-8」には表示されませんのみ「UTF-8」

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

私はUTF-8として私の文書をエンコードする場合は、それがで正しく表示されますブラウザ。もし私がUTF-8 without BOM(これは私が理解しているより標準的です)としてエンコードすると、私は珍しい文字を取得します。

私は間違っていますか?

+0

Webサーバーは、コンテンツタイプヘッダーでエンコードを指定していますか?この値は変化しますか? –

+0

ヘブライ語のテキスト[こちら](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です。)

ウェブサーバーの修正は、サーバーの種類によって異なります。これがApache httpdによって提供されるディスク上の静的リソースである場合、AddCharset UTF-8 .htmlのようなものがヘッダーを追加します。

このリソースが動的に提供されている場合は、レスポンスを生成するときに適切なHTTPヘッダーを追加する必要があります。self.send_header('Content-Type', 'text/html; charset=utf-8')のようなものがPythonの基本HTTPサーバーに追加されます。

+0

ありがとうございます。私はまだHTMLにcharsetを含めるべきか、それとも不必要に冗長なのでしょうか? – pppp

+0

https://html.spec.whatwg.org/multipage/semantics.html#character-encoding-declarationによると、1つが必要です。両方を使用すると冗長と見なすことができますが、テキストエディタで正しいエンコーディングを使用することができます。 –

関連する問題