5 に答える
私にとって有効な解決策は、小枝のドキュメント http://twig.sensiolabs.org/doc/filters/convert_encoding.htmlに従うことでした
フィルターの適用 {{ field|convert_encoding('UTF-8', ' iso-8859-1') }}
これは、正しいメタ文字セットが定義されているサブテンプレートがメイン テンプレートを継承していない場合によく発生するためです。
ソース データが実際に UTF-8 でエンコードされているかどうかはわかりません。var_dump()
それだけでは、コンテンツのエンコーディングを検証するには不十分です。
コンテンツをエコー/ダンプして、Firefox または Chrome でページを表示し、エンコーディングを UTF-8 に変更してから、ISO-8859-1 などに変更してみてください。UTF-8 を選択したときにコンテンツが正しく表示されない場合、そのコンテンツは UTF-8 でエンコードされていません。
- Firefox でエンコーディングを変更するには: [表示] > [文字エンコーディング]
- Chrome でエンコーディングを変更するには: [ツール] > [エンコーディング]
同様の問題がありましたが、私の場合、問題はデータベースのエンコードの不一致でした。私にとっての解決策はutf8_encode()
、最初にデータをデータベースに挿入するときに使用することでした。
私のコードからのサンプル:
// Convert file name into title of template
$name = str_replace(array('-', '_'), ' ', basename($file, ".html"));
$name = utf8_encode($name);
mb_detect_encoding($str) もエンコードを検出する方法です。