php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.08.2009, 16:20  
Neuer Benutzer
 
Registriert seit: 15.03.2009
Beiträge: 3
Baccu befindet sich auf einem aufstrebenden Ast
Standard Umlaute in Texten über mehrere Datenbankfelder ändern

Hallo,

ich habe folgendes Problem, ich habe in einer Datenbank Texte die nicht im UTF-8 Format eingefügt wurden, somit werden die Umlaute auch nicht richtig dargestellt.
Nun möchte ich die Umlaute per str_replace() ersetzten.
Leider weiss ich aber nicht welches Zeichen sich hinter dem '?' verbirgt.
Bisher sieht mein String so aus:
$vor = array('ƒ','‰','÷','ˆ','‹','¸',"ä", "ö", "ü", "ß", "Ä", "Ö", "Ü");
$nach = array('ä','ä','ö','ö','ü' ,'ü',"ä", "ö", "ü", "ß", "Ä", "Ö", "Ü");

leider bleiben aber die Fragezeichen bestehen,

kann mir jemand helfen?
Baccu
Baccu ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.08.2009, 21:49  
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

Versuch lieber eine Zeichensatzkonvertierung mit PHP (iconv_*, utf8_encode() / utf8_decode()) oder MySQL. Mehr dazu im Handbuch.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 13.08.2009, 09:09  
Neuer Benutzer
 
Registriert seit: 25.05.2009
Beiträge: 6
JamesBlond befindet sich auf einem aufstrebenden Ast
Standard

Ein snippet zum reparieren.
PHP-Code:
<?php
mysql_query
("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
 
 
function 
is_validUTF8($str){
 
    
// values of -1 represent disalloweded values for the first bytes in current UTF-8
    
static $trailing_bytes = array (00000000000000000000000000000000,
        
00000000000000000000000000000000,
        
00000000000000000000000000000000,
        
00000000000000000000000000000000,
        -
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -
1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -
1, -1111111111111111111111111111111,
        
222222222222222233333, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
        
);
 
    
$ups unpack('C*'$str);
    if (!(
$aCnt count($ups))) {
        return 
true// Empty string *is* valid UTF-8
    
}
    for (
$i 1$i <= $aCnt;) {
        if (!(
$tbytes $trailing_bytes[($b1 $ups[$i++])])) continue;
        if (
$tbytes == -1){
            return 
false;
        }
 
        
$first true;
        while (
$tbytes && $i <= $aCnt) {
            
$cbyte $ups[$i++];
            if ((
$cbyte &0xC0) != 0x80){
                return 
false;
            }
 
            if (
$first) {
                switch (
$b1) {
                    case 
0xE0:
                        if (
$cbyte 0xA0){
                            return 
false;
                        }
                        break;
                    case 
0xED:
                        if (
$cbyte 0x9F){
                            return 
false;
                        }
                        break;
                    case 
0xF0:
                        if (
$cbyte 0x90){
                            return 
false;
                        }
                        break;
                    case 
0xF4:
                        if (
$cbyte 0x8F){
                            return 
false;
                        }
                        break;
                    default:
                        break;
                }
                
$first false;
            }
            --
$tbytes;
        }
        if (
$tbytes){
            return 
false// incomplete sequence at EOS
        
}
    }
    return 
true;
}
 
function 
repair_utf8($string)
{
    if (
is_validUTF8($string)) {
        return 
$string;
    } else {
        return 
utf8_encode($string);
    }
}
JamesBlond ist offline  
Alt 13.08.2009, 16:53  
Neuer Benutzer
 
Registriert seit: 15.03.2009
Beiträge: 3
Baccu befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antworten, hab das Snippet von JamesBlond eingebunden und alle Texte werden nun fehlerfrei dargestellt.

Baccu
Baccu ist offline  
 


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
MySQL Konsole und Umlaute unter Windows [LÖSUNG] f4ckm5 Datenbanken 8 30.03.2009 22:10
Userdaten einlesen und ändern 54ch4 PHP Tipps 2009 3 16.03.2009 22:54
Über Formular mysql daten ändern? incubo PHP Tipps 2008 6 18.03.2008 04:11
Mysql-String prüfen und Umlaute ändern Igäl PHP Tipps 2007 3 09.08.2007 17:09
Daten über checkbox ändern PHP Tipps 2006 8 10.06.2006 13:39
Umlaute ändern PHP Tipps 2007 1 28.12.2005 15:42
Ändern von COLS bei Framesets über Javascript HTML, Usability und Barrierefreiheit 5 22.02.2005 17:01
falsch dargestellte umlaute in db ändern - replace() nautiluS Datenbanken 1 30.12.2004 20:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
umlaute in datenbank ändern, umlaute in php ändern, php cbyte, php utf8_decode umlaute, ä als &auml; in mysql schreiben, umlaute per php ändern, mysql &uuml in ü ändern, umlaute in der datenbank ändern, google currents \&ouml;\ umkonvertieren, umlaute in der datenbank anpassen, mysql umlaute &uuml in db korrigieren, set utf-8 array ändern php, mysql &uuml; in ü ersetzen, umlaute bei php änderm, sonderzeichen in &uuml; ändern php, php ein ä in ein &auml ändern, umlaute per php in datenbank, trailing_bytes utf8, &ouml; utf-8, umlaute bei google ã¤ndern

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:43 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