PHP: Как создать файл, закодированный как «UTF-8 без спецификации» - PullRequest
5 голосов
/ 30 октября 2010

Как я полагаю, большинство из вас знает, что у нас есть следующие кодировки для файлов:

  • ANSI
  • UTF-8

UTF-8 распознается добавлением трех символов в начале файла, но эти символы вызывают некоторые проблемы в языке PHP, как вы знаете, поэтому мы используем

  • UTF-8 без спецификации (вместо UTF-8)

Вот мой вопрос: как мы можем написать новый файл (с использованием PHP) с кодировкой (UTF-8 без спецификации), используя frwite () или любую другую функцию (не имеет значения)

(я не спрашиваю о настройках редактора> Я спрашиваю о создании файла с функциями php)

Ответы [ 4 ]

2 голосов
/ 31 октября 2010

Боюсь, вы неверно представили UTF-8 и ANSI в своем вопросе.

UTF-8 - это , а не , необходимая для начала спецификации. Нет такой кодировки, как кодировка "UTF-8 без BOM". Там просто "UTF-8". Я обработал миллионы (ну, конечно, сотни тысяч) файлов UTF-8 и ни разу не сталкивался с спецификацией при их запуске.

Согласно стандарту Unicode , спецификация не требуется и не рекомендуется в UTF-8:

2.6 Схемы кодирования

Использование спецификации не требуется и не рекомендуется для UTF-8, но может встречаться в ситуациях, когда данные UTF-8 преобразуются из других форм кодирования, в которых используется спецификация, или когда спецификация используется в качестве сигнатуры UTF-8. , См. Подраздел «Метка порядка следования байтов» в Раздел 16.8, Специальные предложения , для получения дополнительной информации.

Также, нет такой кодировки, как "ANSI"!

Ближайшая вещь, которую IANA предоставляет , предоставляет "ANSI" для имени набора символов: "ANSI_X3.4-1968" и "ANSI_X3.4-1986", которые оба являются просто псевдонимами для US-ASCII "(предпочтительное имя MIME), 7-битное кодирование 128 кодовых точек. Нет другого официального имени в кодировке, содержащего в своем имени «ANSI».

Я не уверен, в какой среде вы работаете, но, похоже, это привело вас к совершенно нестандартным именам, ожиданиям и стандартам.

Может быть, это ... Windows ™? ☹

РЕДАКТИРОВАТЬ: Только что нашел этот ответ об источнике этого Misonymy.

0 голосов
/ 29 июня 2015

Просто создайте файл в PhP и добавьте обычный текст. У меня это работает.

/*creating the page account.php*/

$archivo="account.php";

$myFile = "$archivo";
$fh = fopen($myFile, "wb") or die("can't open file");
fwrite($fh,"$archivo");//In this case I am writing the name of the file inside of it.
fclose($fh);    
0 голосов
/ 20 апреля 2012

Я нашел решение для этого, вы можете открыть / создать файл и использовать его для записи подписи в начале, чтобы установить его как UTF8:

$fp = fopen("filename.ext","wb");
fwrite($fp,pack("CCC",0xef,0xbb,0xbf));

Я проверял это и прекрасно работает!

Я нашел это здесь

0 голосов
/ 30 октября 2010

Если это "без спецификации", то это просто обычные байты в файле.

Все они - просто числа, от 0 до 255 или от 0x00 до 0xFF, как последовательность байтов в файле.Как вы их интерпретируете, будет зависеть от вас или программы.

...