web-dev-qa-db-de.com

Anstelle eines Apostroph (') PHP

Ich habe versucht, den Text in oder von utf8 umzuwandeln, was scheinbar nicht geholfen hat.

Ich erhalte:

"It’s Getting the Best of Me"

Es sollte sein:

"It’s Getting the Best of Me"

Ich bekomme diese Daten von von dieser URL.

48
Mint

So konvertieren Sie in HTML-Entitäten:

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

In den Dokumenten für mb_convert_encoding finden Sie weitere Codierungsoptionen.

76
Matthew

Stellen Sie sicher, dass Ihre HTML-Kopfzeile utf8 angibt

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

Das macht normalerweise den Trick für mich (offensichtlich wenn der Inhalt IS utf8).

Sie müssen nicht in HTML-Entitäten konvertieren, wenn Sie den Inhaltstyp festlegen.

24
Ben

Ihr Inhalt ist in Ordnung. Das Problem liegt bei den Headern, die der Server sendet:

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 sollte auf Content-type: text/plain; charset=utf-8 gesetzt sein, da diese Seite nicht HTML ist und die utf-8-Kodierung verwendet. Chromium auf dem Mac erraten ISO-8859-1 und zeigt die von Ihnen beschriebenen Zeichen an.

Wenn Sie nicht die Kontrolle über die Site haben, geben Sie die Kodierung als UTF-8 für die Funktion an, mit der Sie den Inhalt abrufen. Ich bin nicht vertraut mit PHP, um genau zu wissen, wie.

12
cobbal

Ich weiß, dass die Frage beantwortet wurde, aber das Setzen des Meta-Tags half in meinem Fall nicht und die ausgewählte Antwort war nicht klar genug. Daher wollte ich eine einfachere Antwort geben.

Um es einfach zu halten, speichern Sie den String in eine Variable und verarbeiten diesen Prozess

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

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

echo $notGiberish;

Welches sollte zurückgeben, was Sie wollten It’s Getting the Best of Me

Wenn Sie etwas analysieren, können Sie eine Konvertierung durchführen, indem Sie einer Variablen wie dieser Werte Werte zuweisen, wobei $TVrage ein Array mit allen Werten ist. XML in diesem Beispiel aus einem Feed mit dem Tag "Title", der Sonderzeichen wie ‘ oder enthalten kann ’

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

Wenn Sie hier sind, weil Probleme mit Junk-Zeichen in Ihrer WordPress-Site auftreten, versuchen Sie Folgendes:

  1. wp-config.php öffnen

  2. Kommentieren Sie define('DB_CHARSET', 'utf8') und define('DB_COLLATE', '') aus

    /** 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', '');
    
5
questCorp

Es klingt, als würden Sie Standardzeichenfolgenfunktionen für UTF8-Zeichen (’) verwenden, die in ISO 8859-1 nicht vorhanden sind. Prüfen Sie, ob Sie Unicode-kompatible PHP Einstellungen und Funktionen verwenden. Siehe auch die Stringfunktionen multibyte .

3
pr1001

Ich habe mir den Link angesehen und es sieht für mich wie UTF-8 aus. Wenn Sie also in Firefox Ansicht, Zeichencodierung, UTF-8 wählen, wird es korrekt angezeigt.

Sie müssen also nur herausfinden, wie Sie Ihren PHP - Code als UTF-8 verarbeiten können. Viel Glück!

1

Probieren Sie es einfach aus

wenn $text seltsame Zeichen enthält, mache dies:

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

und du bist fertig.

1
Pranjal Deka

Für fopen und file_put_contents funktioniert dies:

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

versuche dies : 

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

wenn nicht alles zu funktionieren scheint, könnte dies die beste Lösung sein.

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

== oder ==

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

Wir hatten Erfolg, die folgende Richtung zu gehen:

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

Sie sollten die Codierung von Origin überprüfen und dann versuchen, sie in den richtigen Codierungstyp umzuwandeln.

In meinem Fall lese ich CSV-Dateien und importiere sie in die Datenbank. Einige Dateien werden gut angezeigt, andere nicht. Ich überprüfe die Codierung und sehe, dass die Datei mit der Codierung ASCII= gut angezeigt wird. Andere Dateien mit UTF-8 sind defekt. Daher verwende ich folgenden Code zum Konvertieren der Codierung:

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

Nach der Konvertierung schiebe ich den Inhalt in eine Datei und bearbeite den Import in die Datenbank. Jetzt wird er im Front-End gut angezeigt

0
V.Tran

benutze das 

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

an Stelle von

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