По каким причинам мой текст содержит черные бриллианты в этом кратком коде? - PullRequest
1 голос
/ 21 сентября 2011

Я создал файл на своем локальном хосте со следующим кодом:

<?php

header('Content-Type: text/plain; charset=UTF-8');

echo "yoá";

Вывод в моем Firefox:

enter image description here

Почему замена Unicodeсимвол

Ответы [ 3 ]

5 голосов
/ 21 сентября 2011

Поскольку ваш файл PHP-скрипта не сохраняется как UTF-8 из вашего редактора.Все достойные редакторы позволяют вам конвертировать и сохранять как несколько разных кодировок (даже Блокнот делает это сейчас).Сохраните в UTF-8, и вы увидите, что символ отображается нормально.

Техническое объяснение :

Соответствующим символом является кодовая точка U + 00E1 ("латинская строчная буква").с острым ").Предположим, что вы сохранили свой скрипт в однобайтовой кодировке (что наиболее вероятно), этот символ будет представлен байтом с шестнадцатеричным значением 0xE1, которое в двоичном виде равно

11100001

из Правила кодирования UTF-8 , мы видим, что этот байт попадает в категорию

1110zzzz

, которая является первым из ровно трех байтов, которые кодируют один символ в диапазоне кодовых точек U + 0800 доU + FFFF.Тем не менее, в вашем случае либо нет больше байтов, следующих за этим, либо, если они есть, они не удовлетворяют ограничениям кодировки UTF-8.

Следовательно, браузер определяет, что существует неправильно сформированная последовательность байтов, и отображаетвместо знака вопроса.

0 голосов
/ 21 сентября 2011

Попробуйте это:

 header('Content-Type: text/plain; charset=UTF-8'); 
 $txt= "yoá";
 echo iconv("ISO-8859-1","UTF-8",$txt);

если вы не уверены в правильности строки UTF8, используйте lib для проверки

  http://hsivonen.iki.fi/php-utf8/

  if(is_valid_utf8($txt)==true)  ....
0 голосов
/ 21 сентября 2011

вы отправляете заголовок utf-8, но ваш исходный файл не установлен (и не сохранен как) utf-8. проверьте настройки вашего редактора кода / ide, чтобы исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...