PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   iconv UTF-8 ISO-8859-7 ISO-8859-1 (https://www.php-resource.de/forum/php-developer-forum/72956-iconv-utf-8-iso-8859-7-iso-8859-1-a.html)

Orestes 14-07-2006 17:43

iconv UTF-8 ISO-8859-7 ISO-8859-1
 
Hallo,
mein provider hat umgestellt und ich muss nun utf-8 in die Datenbank kriegen.

Hab ne routine geschrieben:
PHP-Code:

$arr $oCore->mysql->select("tbl_client");
for (
$i 0$i count($arr); $i++) {
    foreach (
$arr[$i] as $key => $val) {
        if (
preg_match("/_gr/"$key))
            
$arr[$i][$key] = iconv("ISO-8859-7""UTF-8"$arr[$i][$key]);
        elseif (
preg_match("/_de/"$key))
            
$arr[$i][$key] = iconv("ISO-8859-1""UTF-8"$arr[$i][$key]);
    }
    
$oCore->mysql->insert("tbl_client_utf8"$arr[$i]);


aber die tuts nicht ...

print_r erzeugt optimale ausgabe
in der Datenbank ist dann wieder nur Müll

also sowas:
'Feinste klassische griechisch-kretanische Küche m...'

und im griechischen schauts noch schlimmer aus!!
'?????_???????³ ???°?????©??'

Wer weiss Rat?

Slava 14-07-2006 18:30

Liste der Anhänge anzeigen (Anzahl: 1)
es geht nicht nur um datenbank, sondern auch um charset von der Seite, die dein script ausgibt.
ich habe extra im Anhang, die Kopie von dieser Seite gemacht, nur mit dem kleinem unterschied "charset=utf-8"
schau mal wie die "Müll" und wie die "Küche" aussieht!!!
(aber als html abspeichern)

Abraxax 14-07-2006 18:46

Liste der Anhänge anzeigen (Anzahl: 1)
@slava
das meta-charset benutzt der browser nur, wenn er keinen charset header vom server erhält.

bei mir klappt die darstellung daher auch ohne der meta-änderung.... ich kann zwar kein griechisch, sollte aber dennoch passen. screener anbei.


EDIT:
den sklaven entfernt. ;)

Slava 14-07-2006 18:55

Zitat:

Original geschrieben von Abraxax
@slave
das meta-charset benutzt der browser nur, wenn er keinen charset header vom server erhält.

so wie ich es verstehe pfeift der browser auf den header, wenn in meta ein charset eingestelt ist.
in jedem fall wollte ich im zeigen, dass "Kü" genau als "ü" bei richtigem utf-8 header oder meta dargestellt wird

Orestes 14-07-2006 18:59

Die deutschen Umlaute scheinen nun zu gehen
PHP-Code:

elseif (preg_match("/_de/"$key))
            
$arr[$i][$key] = utf8_decode (iconv("ISO-8859-1""UTF-8"$arr[$i][$key])); 

aber griechisch ist immer noch Panne

Mit
PHP-Code:

echo iconv("ISO-8859-1""UTF-8"$arr[$i][$key]) 

kommt: 'Kρέτα μπαρ'

Mit
PHP-Code:

$arr[$i][$key] = iconv("ISO-8859-1""UTF-8"$arr[$i][$key]) 

steht dann: K??_???± ?????±?

Und utf8_decode bringt auch nichts ...


Wo such ich, wer weiss was, HILFE!!

Abraxax 14-07-2006 19:02

Zitat:

Original geschrieben von Slava
so wie ich es verstehe pfeift der browser auf den header, wenn in meta ein charset eingestelt ist.
anders rum ist es korrekt. ;)

Orestes 14-07-2006 19:09

huch seid Ihr schnell!!

@Abraxax - nene das is schon noch die alte version
Aber ich krieg keine neuen Daten mehr drauf!!!

und ausserdem is es sowieso ratsam utf8 in der db zu haben

Vielleicht ne Idee zu utf8 griechisch???

die Datenbank ist:
collation_connection=latin1_swedish_ci
die betroffenen Spalten:
collation=greek_bin

Und damit kann ich auch händisch eintragen und im phpMyadmin
lesen.
Aber eben nur bei neuen Tabellen, weil mit MySql 4.1 nur nioch die utf-8
Unterstützung zugelassen wird.

Trotsdem danke!

Orestes 14-07-2006 19:21

@ Abraxax
Hi - is der Screenshot ein Mac ?
wiso isn da die Schrift in dem Laufbalken so gross?

Um wieviele Px muss ich in der css runter ?

Dank Dir - Orestis

Slava 14-07-2006 19:25

@Abraxax
du hast recht!
also bei richtigem header pfeift er auf meta
:)
PHP-Code:

<?php 
header
("Content-type: text/html; charset=UTF-8");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="MSThemeCompatible" content="Yes">
</head>
<body>
<h1>Kü</h1> 
</body>

so gibt er Kü aus, obwohl in meta ISO-8859-1 steht.
wenn ich header auskommentiere, dann bekomme ich Kü in ausgabe.

"ein Kölsch geht von mir";)
wenn du natürlich versprichst mich nicht mehr Slave zu nennen :beer:

Abraxax 14-07-2006 21:11

Zitat:

Original geschrieben von Orestes
@Abraxax - nene das is schon noch die alte version
Aber ich krieg keine neuen Daten mehr drauf!!!
und ausserdem is es sowieso ratsam utf8 in der db zu haben
Vielleicht ne Idee zu utf8 griechisch???

ich würde dir empfehlen grundsätzlich alles als UTF8 abzuspeichern. wenn du noch eine DB hast, die das nicht kann, musst du es später nur konvertieren. ist halt dann ein einmaliger aufwand.

aber wenn ich das richtig sehe, kann deine DB das schon?

Zitat:

Original geschrieben von Orestes
@ Abraxax
Hi - is der Screenshot ein Mac ?

nein. das ist debian linux unter gnome. epiphany ist der browser.
Zitat:

Original geschrieben von Orestes
wiso isn da die Schrift in dem Laufbalken so gross?
Um wieviele Px muss ich in der css runter ?

das musst du besser wissen. nur als tipp. niemals feste größen verwenden.


Zitat:

Original geschrieben von Slava
"ein Kölsch geht von mir";)
wenn du natürlich versprichst mich nicht mehr Slave zu nennen :beer:

habe ich jemals slave geschrieben? :D (s.o.)




@Orestes
wenn du magst, kann ich dir einen zugriff auf mein cms gewähren. ist zwar noch nicht fertig, aber du kannst hier GR testen. ;) schicke mir dazu eine mail (button unter dem post) unter angabe deinen vor- und zunamens sowie deiner email, wenn es eine andere sein soll, als die hier im forum.

Orestes 15-07-2006 13:49

@abraxas

Zitat:

ich würde dir empfehlen grundsätzlich alles als UTF8 abzuspeichern.
wenn du noch eine DB hast, die das nicht kann, musst du es später nur konvertieren. ist halt dann ein einmaliger aufwand.
Genau das ist ja mein Problem!!!

Wie konvertiere ich in MYSQL 4.0 daten (!utf8 sondern ISO-8859-7)
zu MYSQL 4.1-daten (also utf8) ????

und nur konvertieren is nun mal nicht.

Vormals: KEINE COLLATION ->
In der DB steht z.b. 'KñÝôá ìðáñ'
Und das ist auch gut so ... Daraus wird mit ISO-8859-7 'Kρέτα μπαρ'

So - der Provider hat nun MYSQL 4.1 aufgesetzt.
d.H. KEIN ISO-8859-7 sondern nur el-utf-8 im phpMyAdmin!
Mit el-utf-8 steht immer noch 'KñÝôá ìðáñ'
Und in dem Moment wo ich die collation auf greek_bin umstelle,
weil ich will ja griechisch lesen und schreiben können,
kracht die Spalte!

das mit dem Test nächte Woche - muss erst mal das Ding hier am laufen halten - un heute abend auf ne griechische Hochzeit - weisst Du was das heisst!!!!

Abraxax 15-07-2006 13:58

kannst du dir daten nciht aus der alten DB mit deinem bisherigen zeichensatz auslesen , in utf8 konvertieren und dann in die neue DB importieren? das sollte doch machbar sein.

Orestes 21-07-2006 14:21

@Abraxax

Ich fürchte genau das ist das Prob.

Auslesen - geht gut
Display im Browser - geht gut
Konvertieren und DISPLAY IM BROWSER - geht gut
Konvertieren und zurück in die Datenbank
(Neue Tabelle mit collation=greek_bin!!) - MÜLL

und 'collation=greek_bin' muss ich haben,
wiel NUR greek_bin Griechische Sprache im PHPMyAdmin unterstützt.

So was haben die MySql'er un phpMyAdmin'er da gedacht??

Ist nicht machbar! - ich find es einfach nicht!

wahsaga 21-07-2006 16:20

Zitat:

Original geschrieben von Orestes
und 'collation=greek_bin' muss ich haben,
wiel NUR greek_bin Griechische Sprache im PHPMyAdmin unterstützt.

Wie kommst du denn zu der Aussage?

Orestes 24-07-2006 17:10

@wahsaga

weil ichs ausprobiert habe!!!

aus
INSERT INTO 'tbl_xxxx' ('feld_name') VALUES ('καλιμεέρα');
wird dann: ???????????

Probiers Doch selber mal aus!!!


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:51 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG