programing

PHP에서 아포스트로피(') 대신 ™를 받는 중

javajsp 2023. 7. 23. 14:02

PHP에서 아포스트로피(') 대신 ™를 받는 중

저는 utf8로 또는 utf8에서 텍스트를 변환하려고 시도했지만 도움이 되지 않는 것 같습니다.

다음과 같은 정보:

"It’s Getting the Best of Me"

다음과 같아야 합니다.

"It’s Getting the Best of Me"

는 이 URL에서 이 데이터를 얻습니다.

HTML 엔티티로 변환하는 방법

<?php
  echo mb_convert_encoding(
    file_get_contents('http://www.tvrage.com/quickinfo.php?show=Surviver&ep=20x02&exact=0'),
    "HTML-ENTITIES",
    "UTF-8"
  );
?>

자세한 인코딩 옵션은 mb_convert_encoding에 대한 문서를 참조하십시오.

HTML 헤더가 utf8로 지정되었는지 확인합니다.

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

이는 일반적으로 저에게 유용합니다(분명히 내용이 Utf8인 경우).

내용 유형을 설정하면 HTML 엔티티로 변환할 필요가 없습니다.

내용이 정상입니다. 서버가 보내는 헤더에 문제가 있습니다.

Connection:Keep-Alive
Content-Length:502
Content-Type:text/html
Date:Thu, 18 Feb 2010 20:45:32 GMT
Keep-Alive:timeout=1, max=25
Server:Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.7 with Suhosin-Patch
X-Powered-By:PHP/5.2.4-2ubuntu5.7

은 Content-Type으로 .Content-type: text/plain; charset=utf-8이 페이지는 HTML이 아니며 utf-8 인코딩을 사용하기 때문입니다.Mac의 크롬은 ISO-8859-1을 추측하여 설명하는 문자를 표시합니다.

사이트를 제어할 수 없는 경우, 내용 검색에 사용하는 기능에 인코딩을 UTF-8로 지정합니다.저는 PHP에 익숙하지 않아서 정확한 방법을 알 수 없습니다.

질문에 답한 것은 알지만 제 경우 메타태그 설정이 도움이 되지 않았고 선택한 답변이 충분히 명확하지 않아 더 간단한 답변을 드리고 싶었습니다.

단순성을 유지하려면 문자열을 변수에 저장하고 다음과 같은 프로세스를 수행합니다.

$TVrageGiberish = "It’s Getting the Best of Me";

$notGiberish = mb_convert_encoding($TVrageGiberish, "HTML-ENTITIES", 'UTF-8');

echo $notGiberish;

것을 해야 합니다.It’s Getting the Best of Me

만약 당신이 무언가를 파싱하고 있다면, 당신은 다음과 같은 변수에 값을 할당하면서 변환을 수행할 수 있습니다.$TVrage입니다. 이에서는 "로, "Title", "과 같은 문자를 참조하십시오. XML은 "Title"과 같은 문자를 포함할 수 있습니다.‘또는’.

$cleanedTitle = mb_convert_encoding($TVrage->title, "HTML-ENTITIES", 'UTF-8');

WordPress 사이트에서 정크 문자 문제가 발생하여 여기에 있는 경우 다음을 시도해 보십시오.

  1. 을 엽니다.wp-config.php

  2. 달기define('DB_CHARSET', 'utf8')그리고.define('DB_COLLATE', '')

    /** MySQL hostname */
    define('DB_HOST', 'localhost');
    
    /** Database Charset to use in creating database tables. */
    //define('DB_CHARSET', 'utf8');
    
    /** The Database Collate type. Don't change this if in doubt. */
    //define('DB_COLLATE', '');
    

ISO 8859-1에 없는 UTF8 문자(')에 표준 문자열 함수를 사용하는 것 같습니다.유니코드와 호환되는 PHP 설정 및 기능을 사용하고 있는지 확인합니다.멀티바이트 문자열 함수도 참조하십시오.

우리는 다음을 사용하여 다른 방향으로 가는 데 성공했습니다.

mb_convert_encoding($text, "HTML-ENTITIES", "ISO-8859-1");

이것만 드셔보세요.

한다면$text이상한 문자를 포함하면 다음 작업을 수행합니다.

$mytext = mb_convert_encoding($text, "HTML-ENTITIES", 'UTF-8');

그리고 당신은 끝났습니다.

모든 것이 효과가 없을 것 같으면, 이것이 당신의 최선의 해결책이 될 수 있습니다.

<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "&#39;", $content);
echo $content;
?>

== 또는 ==

<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "'", $content);
echo $content;
?>

사용해 보십시오.

html_entity_decode(mb_convert_encoding(stripslashes($text), "HTML-ENTITIES", 'UTF-8'))

위해서fopen그리고.file_put_contents작동합니다.

str_replace("&rsquo;", "'", htmlspecialchars_decode(mb_convert_encoding($string_to_be_fixed, "HTML-ENTITIES", "UTF-8")));

인코딩 원본을 선택한 다음 올바른 인코딩 유형으로 변환해야 합니다.

저의 경우 csv 파일을 읽고 db로 가져옵니다.일부 파일은 잘 표시되지 않습니다.인코딩을 확인해보니 인코딩 ASCII가 있는 파일은 잘 표시되고, UTF-8이 있는 다른 파일은 깨져 있습니다.그래서 저는 인코딩을 변환하기 위해 다음 코드를 사용합니다.

if(mb_detect_encoding($content) == 'UTF-8') {
    $content = iconv("UTF-8", "ASCII//TRANSLIT", $content);
    file_put_contents($file_path, $content);
} else {
    $content = mb_convert_encoding($content, 'UTF-8', 'UTF-8');
    file_put_contents($file_path, $content);
}

변환 후 컨텐츠를 파일로 푸시한 후 DB로 가져오기를 처리하면 프론트엔드에 잘 표시됩니다.

위의 솔루션이 작동하지 않는 경우:

저의 경우 단일 인용문이 다른 스타일의 단일 인용문이라는 것을 알게 되었습니다.' 대신에 제 데이터는 '입니다.하나의 인용구가 어떻게 다른지 아십니까?그래서 저는 단순히 str_replace를 작성해서 교체했고 그것이 문제를 해결했습니다.아마도 가장 우아한 해결책은 아닐 것입니다. 하지만 그것은 일을 끝냈습니다.

$string= str_replace("’","'",$string);

링크를 보니 UTF-8로 보입니다. 즉, Firefox에서 View, Character Encoding, UTF-8을 선택하면 올바르게 표시됩니다.

PHP 코드를 UTF-8로 처리하는 방법만 알면 됩니다. 행운을 빕니다!

이것을 사용합니다.

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

이것 대신에

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

아무 것도 작동하지 않으면 이 mb_convert_encoding($elem->textContent, 'UTF-8', 'utf8mb4')을 시도해 보십시오.

언급URL : https://stackoverflow.com/questions/2292004/getting-%c3%a2%e2%82%ac-instead-of-an-apostrophe-in-php