programing

PHP에서 아포스트로피 ( ') 대신 â € ™ 얻기

itsource 2021. 1. 17. 10:53
반응형

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: text/plain; charset=utf-8이 페이지는 HTML이 아니고 utf-8 인코딩을 사용하므로 Content-Type을로 설정해야합니다 . Mac의 Chromium은 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등의 특수 문자를 포함 할 수 있습니다 태그 "제목"이 피드에서이 예제의 모든 값을 배열, XML이다 ‘또는 ’.

$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 설정 및 기능을 사용하고 있는지 확인하십시오 . 멀티 바이트 문자열 함수 도 참조하십시오 .


모두 작동하지 않는 것 같으면 이것이 최선의 해결책이 될 수 있습니다.

<?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;
?>

링크를 보니 UTF-8처럼 보입니다. 즉, Firefox에서보기, 문자 인코딩, UTF-8을 선택하면 올바르게 표시됩니다.

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


이 시도 :

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

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

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

그냥 시도 해봐

if $text contains strange charaters do this:

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

and you are done..


For fopen and file_put_contents, this will work:

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

use this

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

instead of this

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

You Should check encode encoding origin then try to convert to correct encode type.

In my case, I read csv files then import to db. Some files displays well some not. I check encoding and see that file with encoding ASCII displays well, other file with UTF-8 is broken. So I use following code to convert encoding:

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);
}

After convert I push the content to file then process import to DB, now it displays well in front-end

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

반응형