php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.05.2010, 16:04  
Neuer Benutzer
 
Registriert seit: 12.05.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
r2ls befindet sich auf einem aufstrebenden Ast
Standard Zeichensatz für XML Ausgabe ändern

Hallo,

ich habe eine PHP Umgebung mit UTF-8 als default encoding und lade Daten aus einer DB, ebenfalls UTF-8. Diese Daten möchte ich in einem XML Dokument speichern, allerdings in ISO-8859-15. Zeichen, die in ISO-8859-15 nicht enthalten sind, sollen einfach wegfallen.

Ich benutze folgendes Testskript:
PHP-Code:
$utf 'ЃЁABC';
$enc mb_detect_encoding($utf);
$con iconv($enc'ISO-5589-15//IGNORE'$utf); 
Bekomme allerdings im xdebug nur Schmierzeichen zu sehen, $con ist leer und erhalte in der ZendFramework Applikation, wo ich das Testskript aufrufe, folgende Fehlermeldung:

Notice: iconv(): Wrong charset, conversion from `UTF-8' to `ISO-5589-15//IGNORE' is not allowed

Habe ich eine andere Möglichkeit für die Konvertierung mit PHP?

PHP 5.3 / Netbeans 6.7 / xdebug 2.0.5.5.3 / ZF 1.10.2

Danke

Geändert von r2ls (12.05.2010 um 16:04 Uhr). Grund: typo
r2ls ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.05.2010, 01:26  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hast dus schon ohne //IGNORE bzw. mal mit //TRANSLIT probiert?

Was ist denn ISO-5589-15 fuer ein Zeichensatz?
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online   Mit Zitat antworten
Alt 13.05.2010, 09:45  
Neuer Benutzer
 
Registriert seit: 13.05.2010
Beiträge: 1
PHP-Kenntnisse:
Fortgeschritten
censis befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

es handelt sich vermutlich um einen Zahlendreher.

Es ist bestimmt der Zeichensatz ISO-8859-15 gemeint.

Gruß
Michael Horn
censis ist offline   Mit Zitat antworten
Alt 13.05.2010, 10:01  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von censis Beitrag anzeigen
es handelt sich vermutlich um einen Zahlendreher.
Es ist bestimmt der Zeichensatz ISO-8859-15 gemeint.
Wenn das mal nicht der entscheidende Tipp war
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online   Mit Zitat antworten
Alt 17.05.2010, 10:25  
Neuer Benutzer
 
Registriert seit: 12.05.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
r2ls befindet sich auf einem aufstrebenden Ast
Standard

ich brauch Urlaub

Dieser Fehler liegt an dem Typo im Testskript und ich hab auch noch die falsche Fehlermeldung eingefügt.

Im "richtigen" Skript ist der Zeichensatz korrekt ISO-8859-15 und es gibt folgenden Fehler:

Notice: iconv(): Detected an incomplete multibyte character in input string

Es gibt aber keine Angabe, um welchen character es sich handelt. Auch ein Try catch kann den Fehler nicht abfangen.

PHP-Code:
if(!empty ($input)) {
            
$con '';
            try {
                
$enc mb_detect_encoding($input);
                
$con iconv($enc'ISO-8859-15//IGNORE'$input);
            }
            catch(
Exception $ex ){
                
Utils::logError($ex->getMessage());
            }
            return 
$con;
        }
        else {
            return 
$input;
        } 
r2ls ist offline   Mit Zitat antworten
Alt 17.05.2010, 13:39  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von r2ls Beitrag anzeigen
Im "richtigen" Skript ist der Zeichensatz korrekt ISO-8859-15 und es gibt folgenden Fehler:

Notice: iconv(): Detected an incomplete multibyte character in input string
Nicht mehr, wenn du wie vorgeschlagen //TRANSLIT benutzt.

Zitat:
Es gibt aber keine Angabe, um welchen character es sich handelt.
Das siehst du dann sehr schnell, weil diese beiden Zeichen durch ? ersetzt werden.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 18.05.2010, 10:47  
Neuer Benutzer
 
Registriert seit: 12.05.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
r2ls befindet sich auf einem aufstrebenden Ast
Standard

soweit, so gut. Es wird schonmal fehlerfrei abgespeichert.

Allerdings kommen keine Umlaute durch, obwohl sie im Zeichensatz enthalten sind:

utf8string = 'übrige'
mb_convert_encoding oder iconv nach iso-8859-15
neuer string = 'brige'

r2ls ist offline   Mit Zitat antworten
Alt 18.05.2010, 14:20  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

ist Dein Script als utf8 gespeichert ?

Zitat:
Im "richtigen" Skript
es ist nicht ok hier falsche Scripts zu posten.
Poste immer das Originalscript,
damit wir nicht falsche Vermutungen anstellen.
Koala ist offline   Mit Zitat antworten
Alt 18.05.2010, 14:33  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

PHP-Code:
$utf 'übrige';
$enc mb_detect_encoding($utf);
echo 
utf8_encode(iconv($enc'ISO-8859-15//IGNORE'$utf)); 
gibt mir wie erwartet "übrige" wieder aus.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 19.05.2010, 09:53  
Neuer Benutzer
 
Registriert seit: 12.05.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
r2ls befindet sich auf einem aufstrebenden Ast
Standard

dann nochmal komplett:

php.ini:
default_charset = "utf-8"

PHP-Code:
public static function getIsoString($in) {

        if(!empty (
$in)) {
            try {
                
$enc mb_detect_encoding($in);
                
$con iconv($enc'ISO-8859-15//IGNORE'$in);
                
//$con = mb_convert_encoding($in,  'ISO-8859-15', $enc);
                
return Utils::escapeXml($con);
            }
            catch(
Exception $ex ){
                
Utils::logError($ex->getMessage());
            }
            return 
'CharsetConversionError';
        }
        else {
            return 
$in;
        }    } 
Ein utf8_encode macht doch dort keinen Sinn. Ich will doch als iso-8859-15 speichern. Oder hab ich da ein Verständnisproblem?
r2ls ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe verschiebt sich - Warum? Rutor HTML, Usability und Barrierefreiheit 9 10.02.2010 21:51
String mit Umlauten aus DB erhält bei der Verwendung in Bildpfad falschen Zeichensatz php2go PHP Tipps 2010 14 04.02.2010 18:36
[Erledigt] Zeichensatz Probleme | html sonderzeichen euro moveax1 PHP Tipps 2009 2 25.03.2009 13:15
Userdaten einlesen und ändern 54ch4 PHP Tipps 2009 3 16.03.2009 22:54
Registrierte User sollen ihre Daten ändern können 54ch4 PHP Tipps 2009 17 14.03.2009 14:29
[Erledigt] formatierte Ausgabe tomateundgurke PHP Tipps 2009 11 17.01.2009 10:55
Daten per Formular ändern AJ79 PHP Tipps 2008 1 20.10.2008 21:44
PW ändern script TeazY PHP Tipps 2008 4 15.01.2008 13:48
Problem mit Ausgabe bzw. Abfrage mit ORDER BY mayer Datenbanken 7 02.07.2006 21:45
Sätze ändern??? m-elssner PHP Tipps 2005-2 1 22.10.2005 20:31
Ausgabe der Auswahlliste PHP Tipps 2005-2 6 21.09.2005 13:43
3 Tabellen verbunden -- Ausgabe in einer Spalte Datenbanken 4 06.09.2005 10:43
Datensatz ändern funktioniert nicht PHP Tipps 2005 3 03.03.2005 23:09
[Erledigt] Passwort der DB ändern? Datenbanken 2 12.11.2004 14:39
Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php string zeichensatz ändern, php charset ändern, \detected an incomplete multibyte character in input string\, http://www.php.de/php-fortgeschrittene/67889-zeichensatz-fuer-xml-ausgabe-aendern.html, xml zeichensatz einstellen, iconv detected an incomplete multibyte character in input string, xml zeichensatz ändern, iso-8859-15.enc, zeichensatz für xml, php datei zeichensatz ändern, notice: iconv(): detected an incomplete multibyte character in input string, xml charset ändern, php return xml ausgeben, xml iconv, php xml iconv, iconv xml, detected an incomplete multibyte character in input string, php encoding für ausgabe einstellen, xml charset einstellemn, html using iso-5589-15

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum