Autor Beitrag
kim_wei
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 01.12.09 14:54 
hallo, zusammen,

habe eine Anwendung, die Zeichenkette mit umlaute aus SQL Server 2008 liest, und per POST in einer Tabelle (MySQL) einers Webservers geschickt. Diese Vorgang is O.K. Aber die Umlaute sind alles falsch codiert.

vorraus dank für die Info

kim
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 01.12.09 15:00 
Hallo und :welcome:

Da fehlen alle möglichen Informationen: Zeichensatz der Tabellen in MSSQL und MySql, Aufbau der ConnectionStrings, Art des Datenzugriffs (wirklich ADO.NET?), Aufbau der SQL-Befehle zum Lesen und Speichern, Art des Zwischenspeichers bzw. der Weiterverarbeitung in der Anwendung.

Bitte beachte: NET arbeitet (im Prinzip ausschließlich) mit Unicode, der MS-SQL Server in der Regel ebenfalls. Bei MS-SQL hast du Alternativen, bei MySql gibt es alle möglichen Varianten und Kombinationen. Also muss bei jedem Datenaustausch auf das richtige Encoding geachtet werden.

Gruß Jürgen
kim_wei Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 01.12.09 15:26 
hallo, jürgen,

dank für die Info.

in meine SQL Server bzw.Anwendung ist die Zeichenkette unicode, in der Tabelle des MySQLs ist utf8. Deswegen habe ich folgende Umwandelung in meiner Anwendung implementiert, aber funktioniert es nicht:

...
Encoding enc = Encoding.GetEncoding(1252);
Byte[] bytes = enc.GetBytes(dr["filename"].ToString());
string str = Encoding.UTF8.GetString(bytes);
post.PostItems.Add("FileName", str)
...

voraus dank
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 01.12.09 15:33 
Hallo,

1252 ist Windows-ANSI - eine der in D üblichen westeuropäischen Varianten. UTF8 dagegen ist eine der Unicode-Varianten. Also müsstest du auf das enc.GetBytes ganz verzichten können. (Genauer: das bringt die Codierungen durcheinander.)

Gruß Jürgen
kim_wei Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 02.12.09 09:17 
hallo, Jürgen,

ich habe die Lösung gefunden. Ist einen folgende Anweisung vor dem "Insert" Anweisung in der php Skript (auf der Webserver) ergänzt( diese Skritpt ist von meiner C# Anwendung aufgerfen, wobei die Arguments per "POST" übertragen sind), dann ist alles in Ordnung.

mysql_query("SET NAMES utf8");

gruß,

kim