2010-07-25 9 views
28

Wie speichere ich Unicode in der kostenlosen Version von MySQL?Wie speichert man Unicode in MySQL?

Es scheint nicht nvarchar Typ wie in SQL Server zu sein. Wird Unicode in MySQL nicht unterstützt? Ich habe versucht, text zu verwenden, aber das funktioniert auch nicht.

Antwort

21

Sie benötigen einen utf8_* Zeichen für Ihre Tabelle zu wählen. Text- und Memofelder werden dann automatisch in UTF-8 gespeichert. Unterstützung für UTF-16 kommt in mySQL 6.

+5

Update: UTF-16 & Emoji (utf8mb4) Unterstützung seit der Version 5.5 eingeführt wird: http://dev.mysql.com/doc/refman/5.5/en/charset- unicode.html – Raptor

+0

Es ist erwähnenswert, dass es abhängig davon, wie Sie die Daten aus der Datenbank abrufen, auch notwendig sein kann, dass die Verbindung auch UTF-8 verwendet. – hugovdberg

2

Haben Sie versucht, Namen nach der Verbindung zu setzen? Was war das Ergebnis des Versuchs, Unicode-Zeichen zu speichern? Verbinden Sie sich mit MySQL-Server und geben Sie Folgendes ein:

SET NAMES UTF8; 

Dies sollte "Unterstützung" für utf8 einschalten. Versuchen Sie dann, UTF-Daten zu speichern.

14

den Zeichensatz für eine gegebene Zeichenfolgenspalte (CHAR, VARCHAR oder *TEXT) mit seinem character set and/or collation bestimmt. Dies ist ein ziemlich intensives Thema, deshalb lesen Sie am besten die Dokumentation, die ich verlinkt habe. Zum Beispiel:

CREATE TABLE t1 
(
    col1 CHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci 
) 

wird eine Tabelle mit einem t1col1 erstellen, der seinen Inhalt in UTF-8-Codierung speichert.

+0

Schöne Erklärung und Beispiel. Danke. @ Stefan Gehrig –

1

Ich folge meiner eigenen Art der Codierung, also bitte beachten Sie dies, wenn Sie meinem Beispiel folgen.

Zuerst habe ich die MySql-Datenbank erstellt.

nach Datenbank, in mysql Eingabeaufforderung zu schaffen, geben Sie den Befehl:

SET NAMES = UTF8; 

Tabelle und Spalten Unicode zu speichern sind als UTF8-utf_general_ci mit Kollation Eigenschaft festgelegt werden. Jede einzelne Spalte, die Unicode speichern soll, muss ausgewählt werden und die Kollationseigenschaft auf utf8-utf_general_ci gesetzt werden.

Jetzt in C#.

meine Verbindungszeichenfolge wird wie üblich gesetzt, aber unter Zugabe eines einzelnen Attributs wie folgt aus:

constring = @"SERVER=localhost;" + @"PORT=3306;" + @"DATABASE=gayakidb;" + @"UID=root;" + @"PASSWORD=mysql;" + @"charset=utf8;"; 

Als nächstes installiert Unicode-Zeichensatz in der ‚Display Spracheinstellung‘ des Systems OS. Sie können auch die Schriftartdatei (TrueType-Datei) in den Ordner "Fonts" des Betriebssystems kopieren und einfügen.

Dann habe ich die Schriftart-Eigenschaft des Textfeld-Objekts oder eines anderen Werkzeugobjekts auf der Eigenschaftenseite festgelegt.

Wenn Sie Unicode-Schriftarten über die Tastatur eingeben müssen, müssen Sie die Unicode-Sprache für das Tastaturlayout installieren. Dies könnte mithilfe der Option für regionale Spracheinstellungen Ihres Betriebssystems erfolgen.

Fertig. mit diesen einstellungen habe ich das modul zum speichern von daten verschlüsselt und beim laufenlassen des ochtes hat es die arbeit erfolgreich erledigt.

2

Verwenden Sie diese Abfrage

alter table `DBNAME`.`TblName` Engine=InnoDB checksum=1 comment='' delay_key_write=1 row_format=dynamic charset=utf8 collate=utf8_unicode_ci 
+0

"Verwenden Sie diese Abfrage" ohne eine Erklärung ist eine schlechte Antwort. – Emiswelt