2016-03-23 13 views
1

Ich versuche, eine Daten für das Wörterbuch zu machen.Kann nicht auf Mysql speichern

Aber wenn System speichern in DB transkribieren, verliert es einige der Sonderzeichen.

Ex:

group /ɡruːp/ 

Wenn es in DB speichert, behält es nur group /ɡrup/

Es verliert : Charakter.

Welcher Zeichensatz kann diesen Wert speichern?

Ich versuchte mit UTF8, UTF8-MB4.

Hier ist mein PHP-Code:

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
$conn->set_charset("UTF-16LE"); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$stmt = $conn->prepare("INSERT INTO words (WORD,WORD_UPPER_CASE, TRANSCRIBE, DESCRIPTION)VALUES (?, ?, ?,?)"); 
$stmt->bind_param("ssss", $_WORD,$_WORD_UPPER_CASE, $_TRANSCRIBE, $_DESCRIPTION); 

// set parameters and execute 
$_WORD = $WORD; 
$_WORD_UPPER_CASE = $WORD_UPPER_CASE; 
$_TRANSCRIBE = $TRANSCRIBE; 
$_DESCRIPTION = $DESCRIPTION; 

$stmt->execute(); 
$stmt->close(); 
$conn->close(); 

Dank.

+0

Das ist nur die Beschreibung, Sie müssen den Code zur Verfügung stellen, der die Einfügung durchführt – Ghost

+0

In welche Kodierung sind die Eingabedaten? 'UTF-16LE' ...?! Das ist eher ungewöhnlich ... – deceze

+0

Sie überprüfen nicht, ob '-> set_charset()' erfolgreich ist; Ich denke nicht, dass es so ist. Tatsächlich prüfen Sie nirgends auf Fehler, außer in der Verbindung. das ist keine gute Übung. –

Antwort

1

Ihr Code geht davon aus, dass die Codierung erklärt nicht schief gehen kann:

$conn->set_charset("UTF-16LE"); 

Wenn Sie var_dump($conn->set_charset("UTF-16LE")) laufen Sie bool(false) sehen werden, denn das ist keine gültige Codierung Namen in MySQL.

Im Abschnitt See Also der Funktionsdokumentation finden Sie eine List of character sets that MySQL supports Verbindung. In meinem System, UTF-Codierungen sind dies:

mysql> SHOW CHARACTER SET LIKE '%utf%'; 
+---------+----------------+--------------------+--------+ 
| Charset | Description | Default collation | Maxlen | 
+---------+----------------+--------------------+--------+ 
| utf8 | UTF-8 Unicode | utf8_general_ci |  3 | 
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci |  4 | 
| utf16 | UTF-16 Unicode | utf16_general_ci |  4 | 
| utf32 | UTF-32 Unicode | utf32_general_ci |  4 | 
+---------+----------------+--------------------+--------+ 
4 rows in set (0.00 sec) 

Last but not least, sollten Sie nicht zufällig Codierungen ausprobieren werden. Ihre Anwendung Charset ist etwas, das Sie entscheiden. 2016 gibt es wenig Gründe, UTF-8 nicht zu verwenden.

+0

Danke für Ihre Antwort. Also ich versuche, utf8mb4 in DB und in PHP-Code setzen Zeichensatz ist utf8mb4 aber immer noch Fehler –

+1

Bitte überprüfen Sie [UTF-8 den ganzen Weg] (http://stackoverflow.com/questions/279170/utf-8- all-the-way-through). Abgesehen davon, dass Sie dem System mitteilen, dass Sie UTF-8 verwenden, müssen Sie es tatsächlich verwenden. –