Как удалить ï »¿из начала файла? - PullRequest
135 голосов
/ 15 июля 2010

У меня есть CSS-файл, который отлично смотрится, когда я открываю его, используя gedit , но когда он читается PHP (чтобы объединить все CSS-файлы в один), к этому CSS добавляются следующие символы: ï »¿

PHP удаляет все пробелы, поэтому случайный ï» ¿в середине кода все портит.Как я уже упоминал, я не вижу эти символы на самом деле, когда открываю файл в gedit, поэтому я не могу их легко удалить.

Я погуглил проблему, и с файлом явно что-то не таккодирование, которое имеет смысл, так как я перемещал файлы на разные серверы Linux / Windows через ftp и rsync , с набором текстовых редакторов.Хотя я не очень разбираюсь в кодировке символов, поэтому помощь будет полезна.

Если это поможет, файл сохраняется в формате UTF-8, и gedit не позволит мне сохранить его в ISO-8859-15 формат (документ содержит один или несколько символов, которые не могут быть закодированы с использованием указанной кодировки символов).Я пытался сохранить его с окончаниями строк Windows и Linux, но ни один из них не помог.

Ответы [ 22 ]

2 голосов
/ 14 июля 2014

В Notepad ++ выберите меню «Кодировка», затем «Кодировать в UTF-8 без BOM».Затем сохраните.

См. Вопрос переполнения стека Как заставить Блокнот сохранять текст в UTF-8 без спецификации? .

2 голосов
/ 21 октября 2015

Откройте рассматриваемый PHP-файл в Notepad ++.

Нажмите на «Кодирование» вверху и измените «Кодировка в UTF-8 без спецификации» на «Кодировка в UTF-8».Сохраните и перезапишите файл на своем сервере.

1 голос
/ 22 февраля 2018

В PHPStorm, для нескольких файлов и спецификации не обязательно в начале файла, вы можете искать \x{FEFF} (Регулярное выражение) и заменять ничем.

1 голос
/ 08 сентября 2011

Та же проблема, другое решение.

Одна строка в файле PHP выводила заголовки XML (которые используют те же теги начала / конца, что и PHP).Похоже, код в этих тегах установил кодировку и был выполнен в PHP, что привело к появлению странных символов.В любом случае вот решение:

# Original
$xml_string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";

# fixed
$xml_string = "<" . "?xml version=\"1.0\" encoding=\"UTF-8\"?" . ">";
1 голос
/ 22 августа 2014

Вот еще одно хорошее решение проблемы с спецификацией. Это два VBScript (.vbs) скрипта.

Один для поиска спецификации в файле и один для убийства проклятой спецификации в файле. Он работает довольно хорошо и прост в использовании.

Просто создайте файл .vbs и вставьте в него следующий код.

Вы можете использовать скрипт VBScript, просто перетащив подозрительный файл в файл .vbs. Он скажет вам, если есть спецификация или нет.

' Heiko Jendreck - personal helpdesk & webdesign
' http://www.phw-jendreck.de
' 2010.05.10 Vers 1.0
'
' find_BOM.vbs
' ====================
' Kleines Hilfsmittel, welches das BOM finden soll
'
 Const UTF8_BOM = ""
 Const UTF16BE_BOM = "þÿ"
 Const UTF16LE_BOM = "ÿþ"
 Const ForReading = 1
 Const ForWriting = 2
 Dim fso
 Set fso = WScript.CreateObject("Scripting.FileSystemObject")
 Dim f
 f = WScript.Arguments.Item(0)
 Dim t
 t = fso.OpenTextFile(f, ForReading).ReadAll
 If Left(t, 3) = UTF8_BOM Then
     MsgBox "UTF-8-BOM detected!"
 ElseIf Left(t, 2) = UTF16BE_BOM Then
     MsgBox "UTF-16-BOM (Big Endian) detected!"
 ElseIf Left(t, 2) = UTF16LE_BOM Then
     MsgBox "UTF-16-BOM (Little Endian) detected!"
 Else
     MsgBox "No BOM detected!"
 End If

Если он сообщает, что существует спецификация, создайте второй файл .vbs со следующим кодом и перетащите файл suspicios в файл .vbs.

' Heiko Jendreck - personal helpdesk & webdesign
' http://www.phw-jendreck.de
' 2010.05.10 Vers 1.0
'
' kill_BOM.vbs
' ====================
' Kleines Hilfmittel, welches das gefundene BOM löschen soll
'
Const UTF8_BOM = ""
Const ForReading = 1
Const ForWriting = 2
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim f
f = WScript.Arguments.Item(0)
Dim t
t = fso.OpenTextFile(f, ForReading).ReadAll
If Left(t, 3) = UTF8_BOM Then
    fso.OpenTextFile(f, ForWriting).Write (Mid(t, 4))
    MsgBox "BOM gelöscht!"
Else
    MsgBox "Kein UTF-8-BOM vorhanden!"
End If

Код от Хейко Джендрек .

1 голос
/ 15 июля 2010

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

Я лично использую E Текстовый редактор.

В правом нижнем углу находятся параметры кодировки символов, включая тег спецификации.Загрузите ваш файл, отмените выбор параметра Byte Order Marker, если он выбран, восстановите его, и это должно быть сделано.

Альтернативный текст http://oth4.com/encoding.png

E не бесплатен, но есть бесплатная пробная версия,и это отличный редактор (ограниченная совместимость TextMate ).

1 голос
/ 18 августа 2013

Вы можете открыть его с помощью PhpStorm , щелкнуть правой кнопкой мыши по файлу и нажать Удалить спецификацию ...

0 голосов
/ 12 декабря 2017
  1. Скопируйте текст вашего файла filename.css.
  2. Закройте файл CSS.
  3. Переименуйте его в filename2.css, чтобы избежать конфликта имен файлов.
  4. В MS Notepad или Wordpad создайте новый файл.
  5. Вставьте текст в него.
  6. Сохраните его как filename.css, выбрав UTF-8 из параметров кодирования.
  7. Загрузить файл filename.css.
0 голосов
/ 11 февраля 2016

У меня была такая же проблема. Проблема заключалась в том, что один из моих php-файлов был в utf-8 (самый важный, файл конфигурации, который включен во все php-файлы).

В моем случае у меня было 2 разных решения, которые работали для меня:

Сначала я изменил конфигурацию Apache, используя AddDefaultCharsetDirective в файлах конфигурации (или в .htaccess). Это решение заставляет Apache использовать правильную кодировку.

AddDefaultCharset ISO-8859-1

Вторым решением было изменение неверной кодировки файла php.

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

Используйте Total Commander для поиска всех файлов спецификации:

Элегантный способ поиска файлов UTF-8 с помощью спецификации?

  • Откройте эти файлы в каком-то надлежащем редакторе (который распознает спецификацию), например Eclipse .

  • Измените кодировку файла на ISO (щелчок правой кнопкой мыши, свойства).

  • Вырезать «¿» из начала файла, сохранить

  • Измените кодировку файла обратно на UTF-8

... и даже не думайте снова использовать n ... d!

...