문제

라이브 사이트, 파일 및 데이터베이스를 자동으로 백업하는 백업 서버가 있습니다.

라이브 사이트에서 텍스트는 괜찮아 보이지만 거울 버전을 볼 때 '표시 되나요?' 텍스트 중 일부 내에서. 이 텍스트는 뉴스 데이터베이스 테이블 내에 저장됩니다.

다음은 라이브 서버와 미러 서버에있는 스크린 샷입니다.

미러 서버로 백업하는 과정에서 어떤 일이 발생할 수 있습니까?alt text

도움이 되었습니까?

해결책

다음 기사가 유용합니다

http://dev.mysql.com/doc/refman/en/charset-syntax.html

http://dev.mysql.com/doc/refman/en/charset-connection.html

데이터베이스에 연결 한 후 다음 명령을 발행합니다.

이름 'UTF8'을 설정합니다.

웹 페이지가 UTF-8 인코딩을 사용하는지 확인하십시오.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

PHP는 또한 변환에 유용한 몇 가지 기능을 제공합니다.

http://us3.php.net/manual/en/function.iconv.php

http://us.php.net/mb_convert_encoding

다른 팁

"Mirror"서버 (문제가있는 서버)에서 Apache 구성 파일을 편집하고 다음 줄을 댓글을 달아주십시오.

AddDefaultCharset UTF-8

그런 다음 Apache를 다시 시작하십시오.

service httpd restart

문제는 "addDefaultCharset UTF-8"라인이 .html 파일에 지정된 컨텐츠 유형을 무시한다는 것입니다. 예 :

<meta http-equiv=Content-Type content="text/html; charset=windows-1252">

가장 일반적인 증상은 127 이상의 문자 코드가 물음표가있는 검은 색 다이아몬드 (크롬, 사파리 또는 파이어 폭스) 또는 작은 상자 (IE 및 오페라)로 표시된다는 것입니다. Microsoft Word에 의해 생성 된 HTML 파일은 일반적으로 많은 문자를 가지고 있으며, 가장 일반적인 파일은 문자 코드 160 = 0xa0이며, 이는 Windows-1252 인코딩에서 ""와 동일하며 종종 스팬 태그 사이에서 다음과 같이 발견됩니다.

<span style="mso-spacerun: yes">ááá </span>

브라우저에 표시된 JavaScript 용 솔루션을 찾고 있었지만 데이터베이스와 직접 관련이 없지만 ...

내 경우에는 인터넷에서 찾은 텍스트를 JavaScript 파일로 복사하여 붙여 넣어 Windows 메모장으로 저장했습니다.

해당 JavaScript 파일을 사용하는 페이지가 출력 될 때 문자열이 악센트 문자 등과 같은 특수 문자 대신 물음표가있었습니다 (질문에 표시된 것과 같은).

사용 파일을 열었습니다 Notepad++. 파일을 열 자마자 문자 인코딩이 ANSI 보시다시피 다음 스크린 샷에서 (바닥 글의 마우스 커서) :

enter image description here

문제를 해결하려면 Encoding 메뉴가 있습니다 Notepad++ 그리고 선택하십시오 Encode in UTF-8. 당신은 가기에 좋을 것입니다. :)

브라우저는 페이지의 인코딩을 올바르게 해석하지 않았으므로 (특정 설정으로 강요되거나 페이지가 잘못 설정 되었기 때문에) 일부 문자를 표시 할 수 없습니다.

이것은 캐릭터 인코딩과 관련이있을 것입니다.

미러 사이트가 메인 서버와 캐릭터 인코딩과 관련하여 동일한 속성을 가지고 있습니까?

어떤 종류의 서버에 따라, 이것은 서버 프로세스 자체의 속성이거나 환경 변수 일 수 있습니다.

예를 들어, 이것이 유닉스 환경 인 경우 Lang 또는 LC_ALL을 비교해보십시오.

또한보십시오 여기

미러 서버에서 배출되는 문자 세트를 확인하십시오. 기본 서버와 차이가있는 것으로 보입니다. 라이브 사이트는 미러가 아닌 유니 코드를 출력하는 것으로 보입니다. 또한 일반적으로 들어오는 콘텐츠에서 유니 코드 문자를 문지르고 적절한 HTML 엔티티로 대체하는 것이 좋습니다.

특정 문제는 "스마트 인용문", "em dashes"및 "en dashes"를 고려합니다. 나는 당신이 EM 대시를 교체 할 수 있다는 것을 알고 있습니다 &mdash; 그리고 n- 다시 &ndash; (데이터베이스의 입력 측면에서 수행해야 함); 스마트 인용문의 올바른 대체가 무엇인지 모르겠습니다. (나는 보통 모든 곱슬 한 싱글 따옴표를 '로 바꾸고“... 타이포그래피 괴짜는 나를 시야에 촬영할 수 있습니다.)

일부 브라우저는이 문제를 가진 다른 브라우저보다 더 용서하고 있습니다. Windows의 인터넷 익스플로러는 이것을 자동으로 감지하고 "수정"하는 경향이 있습니다. Firefox 및 대부분의 다른 브라우저에는 물음표가 표시됩니다.

나는 보통 MS Word를 저주 한 다음 다음 wscript를 실행합니다.

// 청소가 필요한 파일로의 경로로 교체
path = "test.html"

var go = wscript.createobject ( "scripting.filesystemobject");
var content = go.getFile (path) .openastextStream (). readall ();
var out = go.creatextFile ( "Clean-"+Path, True);

// 기호
content = content.replace (/“/g, ' "');
content = content.replace (/”/g, ' ");
content = content.replace (/'/g, "");
content = content.replace (/-/g, "-");
content = content.replace (/©/g, "©");
content = content.replace (/®/g, "®");
content = content.replace (/°/g, "°");
content = content.replace (/¶/g, "u003Cp> ");
content = content.replace (/¿/g, "¿");
content = content.replace (/¡/g, '¡');
content = content.replace (/¢/g, '¢');
content = content.replace (/£/g, '£');
content = content.replace (/¥/g, '¥');

out.write (내용);

유니 코드 또는 다른 캐릭터 세트 캐릭터가 넘어 지나요?

텍스트가 이메일이나 다른 문서 형식 (예 : Word)에서 텍스트 편집기로 복사 될 때 자주 작업 한 사이트에서 비슷한 "이상한"문자가 표시되는 것을 보았습니다. 편집기는 비 ASCII 문자를 표시 할 수 있지만 브라우저는 할 수 없습니다. 웹 사이트의 경우 캐릭터에 대한 HTML 엔티티 코드를 찾고 대신이를 삽입하거나 더 표준적인 것으로 전환하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top