2017-06-08 2 views
0

Ich konvertiere Zeichenfolge Codierung von weit utf8 auf begrenzte Codierung cp1251. Ich muss einige Zeichen erhalten, die nicht in cp1251 enthalten sind.PHP-String konvertieren Codierung von UTF8 nach CP1251 mit unmöglichen Zeichen über HTML-Mnemonics ersetzen

In Python 2.x gibt es eine spezielle Funktion, die während der Codierung Umwandlung mit HTML-Entitäten unmöglich Zeichen ersetzt:

# -*- coding: utf-8 -*- 

s_in = "Ø 125 mm".decode('utf8') 
s_out = s_in.encode('cp1251', 'xmlcharrefreplace') 
print s_out # prints Ø 125 mm 

Live example on ideone

Gibt es eine ready-to-use Func/lib in PHP, um die Aufgabe zu erledigen?

Mein Code ist:

<?php 
$in = 'Ø 125 mm'; 
$out = mb_convert_encoding($in, 'cp1251', 'utf8'); 
echo $out; // prints ? 125 mm 

Live example on sandbox.onlinephpfunctions

+0

http://php.net/manual/en/function.htmlentities.php – Kazz

+0

json_encode versuchen - siehe hier http://sandbox.onlinephpfunctions.com/code/ef84c790a08c2de3c4ef87ef18a1a8d75c960791 – ASR

+0

@ASR, json_encode Ausgänge \ u00d8 125 mm – userlond

Antwort

0

Durch die Verwendung von iconv() Funktion in PHP Sie Zeichenfolge von einem zum anderen codierten Schema umwandeln können. Beispiel:

$out = iconv("UTF-8", "CP1251//IGNORE", $in); 

Wenn Sie die Zeichenfolge //IGNORE, Zeichen anhängen, die nicht können im Ziel charset vertreten sind leise

Für eine vollständige Beschreibung verworfen siehe Link: http://php.net/manual/en/function.iconv.php

+0

Scheint so, als würde es die Kodierung nicht konvertieren, die Ausgabe enthält utf8 Symbole – userlond

+0

Bitte sehen Sie die aktualisierte Antwort und sagen Sie mir, ob es funktioniert. –

+0

Seltsam, aber es gibt etwas Falsches zurück, also habe ich leere Zeichenfolgen in der Datenbank, wenn es einige unmögliche Zeichen gibt. '// TRANSLIT' Direktive gibt'? 125 mm Ergebnis.Trotzdem, danke für den Versuch – userlond

Verwandte Themen