gedit를 사용하여 열면 괜찮아 보이는 CSS 파일이 있지만 PHP에서 읽을 때 (모든 CSS 파일을 하나로 병합하기 위해)이 CSS에는 다음 문자가 앞에 붙습니다.
PHP는 모든 공백을 제거하므로 코드 중간에 임의의 가 전체를 엉망으로 만듭니다. 언급했듯이 gedit에서 파일을 열면 실제로 이러한 문자를 볼 수 없으므로 쉽게 제거 할 수 없습니다.
나는 문제를 봤다. 파일 인코딩에는 분명히 잘못된 것이있다. 이것은 다양한 텍스트 편집기를 사용하여 ftp 및 rsync 를 통해 파일을 다른 Linux / Windows 서버로 옮겼 기 때문에 의미가있다 . 문자 인코딩에 대해서는 잘 모르므로 도움을 주시면 감사하겠습니다.
도움이된다면 파일이 UTF-8 형식으로 저장되고 gedit에서 ISO-8859-15 형식으로 저장할 수 없습니다 (문서에 지정된 문자 인코딩을 사용하여 인코딩 할 수없는 하나 이상의 문자가 포함되어 있음). Windows 및 Linux 줄 끝으로 저장하려고 시도했지만 도움이되지 않았습니다.
답변
당신을위한 세 단어 :
이것이 ISO-8859-1의 UTF-8 BOM 표현입니다. BOM을 사용하지 않도록 편집기에 지시하거나 다른 편집기를 사용하여 BOM을 제거해야합니다.
BOM 제거를 자동화하기 위해이 질문에awk
표시된대로 사용할 수 있습니다 .
또 다른 대답에서 알 수 있듯이 PHP가 실제로 BOM을 올바르게 해석하는 것이 가장 좋습니다 mb_internal_encoding()
. 다음과 같이 사용할 수 있습니다 .
<?php
//Storing the previous encoding in case you have some other piece
//of code sensitive to encoding and counting on the default value.
$previous_encoding = mb_internal_encoding();
//Set the encoding to UTF-8, so when reading files it ignores the BOM
mb_internal_encoding('UTF-8');
//Process the CSS files...
//Finally, return to the previous encoding
mb_internal_encoding($previous_encoding);
//Rest of the code...
?>
답변
답변
PHP 에서는 다음을 수행하여 해당 문자를 포함한 모든 비 문자를 제거 할 수 있습니다.
$response = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $response);
답변
쉘 액세스 권한이있는 사용자의 경우 public_html 디렉토리에 BOM이 설정된 모든 파일을 찾기위한 작은 명령이 있습니다. 서버에서 올바른 경로로 변경하십시오.
암호:
grep -rl $'\xEF\xBB\xBF' /home/username/public_html
vi /path-to-file-name/file.php
다음 명령을 입력하여 BOM을 제거하십시오.
set nobomb
파일을 저장하십시오.
wq
답변
BOM은 일련의 문자 (UTF-8의 경우 $ EF $ BB $ BF)이므로 스크립트를 사용하여 제거하거나 편집기가 추가되지 않도록 구성하십시오.
에서 UTF-8에서 BOM을 제거 :
#!/usr/bin/perl
@file=<>;
$file[0] =~ s/^\xEF\xBB\xBF//;
print(@file);
나는 그것이 PHP로 쉽게 번역 될 것이라고 확신합니다.
답변
나를 위해, 이것은 효과가 있었다 :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
이 메타를 제거하면 가 다시 나타납니다. 이것이 누군가를 돕기를 바랍니다 …
답변
PHP를 모르므로 이것이 가능한지 모르겠지만 가장 좋은 해결책은 파일을 다른 인코딩 대신 UTF-8로 읽는 것입니다. BOM은 실제로 ZERO WIDTH NO BREAK SPACE입니다. 이것은 공백이므로 파일을 올바른 인코딩 (UTF-8)으로 읽으면 BOM이 공백으로 해석되어 결과 CSS 파일에서 무시됩니다.
또한 올바른 인코딩으로 파일을 읽을 때의 또 다른 장점은 문자가 잘못 해석 될 염려가 없다는 것입니다. 편집자가 저장하려는 코드 페이지가 필요한 모든 문자를 수행하지는 않는다고 알려줍니다. PHP가 잘못된 인코딩으로 파일을 읽는 경우 BOM 이외의 다른 문자가 자동으로 잘못 해석 될 가능성이 큽니다. 모든 곳에서 UTF-8을 사용하면 이러한 문제가 사라집니다.