Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Codierungspoblem von SQL Server nach MySQL
kim_wei - Di 01.12.09 14:54
Titel: Codierungspoblem von SQL Server nach MySQL
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 - 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 - 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 - 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 - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!