insert-Script für utf8-Daten

insert-Script für utf8-Daten

am 12.05.2006 12:18:03 von Ralph Stahl

Moin,

ich möchte mit einem beliebigen utf8-fähigen Texteditor ein insert-
Script schreiben, um eine Tabelle mit vordefinierten Daten zu erzeugen.=20
Die DB-Tabelle ist mit collation=3Dutf8-general-ci angelegt worden. Es=20
geht um Texte mit osteuropäischen Sonderzeichen.

Erzeuge ich die inserts über PHP und den lokalen Webserver, klappt das.=
=20
Lasse ich das insert-Script in der mysql-Shell laufen, klappt es nicht -=20
dann kommen sonderbare Zeichen raus.

Mir ist die Notwendigkeit der richtigen EInstellung per SET-Befehl für=20
die Connection und anderes wohl bewußt und denke mal, daß ich die=20
passenden SET-Zeilen auch in das Script schreiben muß. Ich finde nur=20
keine Kombination raus, die a) fehlerfrei läuft (manche SETs sind aus=20
Client-Sicht read-only) und b) das richtige bewirkt.

Könnt Ihr mir bitte helfen? (Ich weiß schon, "Manual lesen", aber damit=
=20
komme ich trotzdem nicht weiter)

Ralph

Re: insert-Script fürutf8-Daten

am 12.05.2006 12:58:27 von Thomas Rachel

Ralph Stahl wrote:

> Erzeuge ich die inserts über PHP und den lokalen Webserver, klappt das.
> Lasse ich das insert-Script in der mysql-Shell laufen, klappt es nicht -
> dann kommen sonderbare Zeichen raus.

Hilft es, den Client mit --default-character-set=utf8 zu starten?
Alternativ: eine entsprechende Zeile in Deiner ~/.my.cnf unterzubringen?


Thomas

Re: insert-Script für utf8-Daten

am 12.05.2006 13:09:41 von Alex Hepp

Hallo!

Ralph Stahl schrieb:
> Moin,
>
> Erzeuge ich die inserts über PHP und den lokalen Webserver, klappt das.
> Lasse ich das insert-Script in der mysql-Shell laufen, klappt es nicht -
> dann kommen sonderbare Zeichen raus.

Wenn Du sagst, lokal klappt das alles, gehe ich davon aus, dass du einen
remote server hast... dann liegt es wohl am Server ;)

> Mir ist die Notwendigkeit der richtigen EInstellung per SET-Befehl für
> die Connection und anderes wohl bewußt und denke mal, daß ich die
> passenden SET-Zeilen auch in das Script schreiben muß. Ich finde nur
> keine Kombination raus, die a) fehlerfrei läuft (manche SETs sind aus
> Client-Sicht read-only) und b) das richtige bewirkt.

die frage ist folgende: Hast Du (1) ein sql-skript, dass du per console
(shell) und dem mysql-client in die db hauen willst, oder (2) ein php
skript, dass du auf dem remote server laufen lassen möchtest?

(1)
Achtung: Schau mal bitte nach, ob die aktuellen clients für linux
tatsächlich utf-8 unterstützen.
(2)
Wenn das nicht funktioniert, obwohl es lokal klappt, ist die datei beim
hochladen eventuell als simples ascii gespeichert worden (und dann kein
utf-8 mehr), du musst u.U. auch deinem server, resp. deinem ftp-client
sagen, dass es sich um utf-8 handelt. lass dir doch die datei mal auf
dem server mit vi anzeigen...

> Könnt Ihr mir bitte helfen? (Ich weiß schon, "Manual lesen", aber damit
> komme ich trotzdem nicht weiter)

IMHO kann man das mit den Zeichensätzen nicht mit manuals lösen. Wenn
jemand mal ein Manual verfasst hat, bin ich gerne bereit, das Probe zu
lesen.

Gruß alex

Re: insert-Script für utf8-Daten

am 12.05.2006 14:54:17 von Axel Schwenke

Ralph Stahl wrote:

> ich möchte mit einem beliebigen utf8-fähigen Texteditor ein insert-
> Script schreiben, um eine Tabelle mit vordefinierten Daten zu erzeugen.
> Die DB-Tabelle ist mit collation=utf8-general-ci angelegt worden. Es
> geht um Texte mit osteuropäischen Sonderzeichen.
> Erzeuge ich die inserts über PHP und den lokalen Webserver, klappt das.
> Lasse ich das insert-Script in der mysql-Shell laufen, klappt es nicht -
> dann kommen sonderbare Zeichen raus.

Dann ist dein Client nicht auf UTF8 eingestellt.

> Mir ist die Notwendigkeit der richtigen EInstellung per SET-Befehl für
> die Connection und anderes wohl bewußt und denke mal, daß ich die
> passenden SET-Zeilen auch in das Script schreiben muß.

Ja.

> Ich finde nur
> keine Kombination raus, die a) fehlerfrei läuft (manche SETs sind aus
> Client-Sicht read-only) und b) das richtige bewirkt.

Sorry, meine Glaskugel scheint kaputt zu sein. Ich kann gerade
nicht sehen was du probiert hast und was da jeweils schief geht.

Ein mysqldump (die Ausgabe des mysqldump Programms) enthält ganz
am Anfang die Zeile

/*!40101 SET NAMES utf8 */;

Ich hoffe, dieser Zaunpfahl war groß genug.


XL

Re: insert-Script für utf8-Daten

am 12.05.2006 15:10:28 von Ralph Stahl

In schrieb glglgl@expires-2006-05-
31.arcornews.de:
> Ralph Stahl wrote:
>=20
> > Erzeuge ich die inserts über PHP und den lokalen Webserver, klappt da=
s.
> > Lasse ich das insert-Script in der mysql-Shell laufen, klappt es nicht =
-
> > dann kommen sonderbare Zeichen raus.
>=20
> Hilft es, den Client mit --default-character-set=3Dutf8 zu starten?

Ja, das sieht gut aus. Zumindest das insert klappt, die Anzeige in der=20
Win-Shell freilich nicht (das zu lösen würde hier zu weit führen :-) =
).

> Alternativ: eine entsprechende Zeile in Deiner ~/.my.cnf unterzubringen?

Naja, ich will das ja nicht generell. Es geht hier um eine sehr=20
spezielle Entwicklung für eine vielsprachige Website.

Danke Dir!
Ralph

Re: insert-Script für utf8-Daten

am 16.05.2006 08:55:00 von Ralph Stahl

In <44646c48$0$11064$9b4e6d93@newsread4.arcor-online.net> schrieb=20
heppa@web.de:
> Hallo!
>=20
> Ralph Stahl schrieb:
> > Moin,
> >=20
> > Erzeuge ich die inserts über PHP und den lokalen Webserver, klappt da=
s.=20
> > Lasse ich das insert-Script in der mysql-Shell laufen, klappt es nicht =
-=20
> > dann kommen sonderbare Zeichen raus.
>=20
> Wenn Du sagst, lokal klappt das alles, gehe ich davon aus, dass du einen
> remote server hast... dann liegt es wohl am Server ;)

So weit bin ich noch gar nicht :-)
>=20
> > Mir ist die Notwendigkeit der richtigen EInstellung per SET-Befehl fü=
r=20
> > die Connection und anderes wohl bewußt und denke mal, daß ich die=
=20
> > passenden SET-Zeilen auch in das Script schreiben muß. Ich finde nur=
=20
> > keine Kombination raus, die a) fehlerfrei läuft (manche SETs sind aus=
=20
> > Client-Sicht read-only) und b) das richtige bewirkt.
>=20
> die frage ist folgende: Hast Du (1) ein sql-skript, dass du per console
> (shell) und dem mysql-client in die db hauen willst, oder (2) ein php
> skript, dass du auf dem remote server laufen lassen möchtest?

Zum Probieren ersteres. Das habe ich gerade mit Hilfe von Thomas mit der=20
passenden Aufruf-Option hinbekommen.

Blöd wird es erst, wenn ich das ganze auf einem Remot-Server einspielen=
=20
will, zu dem ich keinen Shell-Zugang habe (Web-Provider). Aber da kann=20
ich es ja dann etwas krückig mittels PHP-Script machen, das scheint ja=20
zu gehen.

>=20
> (1)
> Achtung: Schau mal bitte nach, ob die aktuellen clients für linux
> tatsächlich utf-8 unterstützen.

Nix Linux bisher, das wird erst das i-Tüpfelchen. Hast recht, das muß=
=20
dann auch gehen. Kann ich aber auch lokal testen (hab beides).

> (2)
> Wenn das nicht funktioniert, obwohl es lokal klappt, ist die datei beim
> hochladen eventuell als simples ascii gespeichert worden (und dann kein
> utf-8 mehr), du musst u.U. auch deinem server, resp. deinem ftp-client
> sagen, dass es sich um utf-8 handelt. lass dir doch die datei mal auf
> dem server mit vi anzeigen...

Guter Tip! Also müßte ich o.g. Script mit FTP/binary hochladen.

>=20
> > Könnt Ihr mir bitte helfen? (Ich weiß schon, "Manual lesen", aber d=
amit=20
> > komme ich trotzdem nicht weiter)
>=20
> IMHO kann man das mit den Zeichensätzen nicht mit manuals lösen. Wenn
> jemand mal ein Manual verfasst hat, bin ich gerne bereit, das Probe zu
> lesen.

Schön wärs schon. Und ich habe (wie so oft) als erstes diesen klugen Ti=
p=20
erwartet ;-).

Danke Dir!
Ralph
=20