Ich habe versucht, den Text in oder aus utf8 zu konvertieren, was nicht zu helfen schien.
Ich erhalte:
"It’s Getting the Best of Me"
Es sollte sein:
"It’s Getting the Best of Me"
Ich bekomme diese Daten von diese URL.
Minze
Ich habe versucht, den Text in oder aus utf8 zu konvertieren, was nicht zu helfen schien.
Ich erhalte:
"It’s Getting the Best of Me"
Es sollte sein:
"It’s Getting the Best of Me"
Ich bekomme diese Daten von diese URL.
Matthew
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"
);
?>
Siehe Dokumente für mb_convert_encoding für weitere Kodierungsoptionen.
Das funktioniert, obwohl ich nicht herausfinden kann, wie ich es auf fopen zum Laufen bringen kann
– Minze
19. Februar 10 um 4:11 Uhr
Sobald Sie den Inhalt der gewünschten Datei erhalten haben, übergeben Sie ihn als ersten Parameter an mb_convert_encoding()
. z.B, $text = fgets($fp); $html = mb_convert_encoding($text, "HTML-ENTITIES", "UTF-8");
– Matthew
19. Februar 10 um 4:46 Uhr
Domain ist nicht mehr gültig.
– mtness
5. Juni 14 um 9:39 Uhr
Was ist mit einer URL, bei der die HTML-Entität keine gültige URL für so etwas wie einen RSS-Feed erstellen würde?
–Titan
22. April 15 um 08:33 Uhr
@GreenGiant: Meine Antwort zeigt Ihnen einfach, wie Sie von einer Codierung in eine andere konvertieren. URLs (mit Ausnahme von Domänen) können Unicode-Zeichen enthalten; zumindest wissen moderne Browser, wie man sie anzeigt. Dies ist beispielsweise eine gültige URL: de.wikipedia.org/wiki😊. (Obwohl SO den Schrägstrich nach Wiki frisst.) Daher ist UTF-8 im Allgemeinen eine akzeptable Codierung für URLs. Aber wenn Sie das vermeiden wollten, könnten Sie versuchen, ‘ASCII’ für den zweiten Parameter zu verwenden. Es werden jedoch offensichtlich nicht so viele Zeichen unterstützt, sodass Sie möglicherweise mit ‘?’ Platzhalter.
– Matthew
23. April 15 um 1:06 Uhr
Stellen Sie sicher, dass Ihr HTML-Header utf8 angibt
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Das reicht normalerweise für mich (offensichtlich, wenn der Inhalt utf8 ist).
Sie müssen nicht in HTML-Entitäten konvertieren, wenn Sie den Inhaltstyp festlegen.
Das muss der beste Beitrag aller Zeiten sein! Ich habe meinen Zeichensatz auf utf-8 aktualisiert und es hat sofort alle meine datenbankgesteuerten Seiten repariert. Danke für diese superschnelle Lösung!
– Jamie
3. April 13 um 19:30 Uhr
Dies sollte als Antwort akzeptiert werden, da es sich um eine globale Lösung handelt.
– Keith Petrillo
24. Oktober 18 um 14:25 Uhr
Kobbeln
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 gesetzt werden Content-type: text/plain; charset=utf-8
, da diese Seite kein HTML ist und die utf-8-Kodierung verwendet. Chromium auf dem Mac errät ISO-8859-1 und zeigt die von Ihnen beschriebenen Zeichen an.
Wenn Sie keine Kontrolle über die Website haben, geben Sie die Codierung als UTF-8 für die Funktion an, die Sie zum Abrufen des Inhalts verwenden. Ich bin nicht vertraut genug mit PHP, um zu wissen, wie genau.
Ich weiß, dass die Frage beantwortet wurde, aber das Festlegen des Meta-Tags hat in meinem Fall nicht geholfen 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 einer Variablen und verarbeiten Sie ihn so
$TVrageGiberish = "It’s Getting the Best of Me";
$notGiberish = mb_convert_encoding($TVrageGiberish, "HTML-ENTITIES", 'UTF-8');
echo $notGiberish;
Was zurückgeben sollte, was Sie wollten It’s Getting the Best of Me
Wenn Sie etwas analysieren, können Sie eine Konvertierung durchführen, während Sie einer Variablen wie dieser Werte zuweisen, wo $TVrage
ist ein Array mit allen Werten, XML in diesem Beispiel aus einem Feed, der das Tag “Title” hat, das Sonderzeichen wie enthalten kann ‘
oder ’
.
$cleanedTitle = mb_convert_encoding($TVrage->title, "HTML-ENTITIES", 'UTF-8');
questCorp
Wenn Sie hier sind, weil Sie Probleme mit Junk-Zeichen auf Ihrer WordPress-Site haben, versuchen Sie Folgendes:
Offen wp-config.php
Auskommentieren define('DB_CHARSET', 'utf8')
und 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', '');
pr1001
Es hört sich so an, als würden Sie Standard-String-Funktionen für UTF8-Zeichen (‘) verwenden, die in nicht vorhanden sind ISO 8859-1. Überprüfen Sie, ob Sie verwenden Unicode-kompatibel PHP-Einstellungen und -Funktionen. Siehe auch die Multibyte String-Funktionen.
semirturgay
Probieren Sie es einfach aus
wenn $text
enthält seltsame Zeichen tun Sie dies:
$mytext = mb_convert_encoding($text, "HTML-ENTITIES", 'UTF-8');
und du bist fertig..
.
Ich sehe das manchmal, wenn Leute mir von einem Mac aus IM oder E-Mails senden. Bin gespannt auf die Lösung.
– Eric J.
18. Februar 10 um 20:37 Uhr
Ja, ich teste den Code auch auf einem Mac mit MAMP Pro.
– Minze
18. Februar 10 um 20:39 Uhr
Wenn das aus einer MySQL-Tabelle stammt, ist keine der hier angegebenen Korrekturen angemessen.
– Rick James
28. Dezember 17 um 0:20 Uhr