2016-03-23 10 views
1

辞書のデータを作成しようとしています。Mysqlへの転記を保存できません

しかし、システム保存がDBに転記されると、特殊文字の一部が失われます。

例:それはDBに保存すると、それだけでgroup /ɡrup/

を保持

group /ɡruːp/ 

はそれ:文字を失います。

この値を保存できる文字セットは何ですか?

私はUTF8,UTF8-MB4で試しました。

// 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(); 

ありがとう:

は、ここに私のPHPコードです。

+0

説明のみです。挿入を行うコードを提供する必要があります – Ghost

+0

入力データはどのようなエンコーディングですか? 'UTF-16LE' ...?それはむしろ珍しいことです... – deceze

+0

' - > set_charset()'が成功するかどうかはチェックしません。私はそうは思わない。実際には、接続以外の場所ではエラーをチェックしません。それは良い習慣ではありません。 –

答えて

1

あなたのコードでは、エンコーディングを宣言することは間違って行くことができないことを前提としています

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

あなたがvar_dump($conn->set_charset("UTF-16LE"))を実行する場合は、そのは、MySQLで有効なエンコード名ではありませんので、あなたがbool(false)が表示されます。

機能ドキュメントのSee Alsoセクションには、List of character sets that MySQL supportsというリンクがあります。

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) 

なく、少なくとも最後に、あなたはランダムなエンコーディングを試すべきではありません

:私のシステムでは、UTFエンコーディングは、これらが含まれています。アプリケーションの文字セットは と決まります。 2016年にUTF-8を使用しない理由はほとんどありません。

+0

あなたの答えをありがとう。 私はutf8mb4をDBとPHPコードセットで設定しようとしています。文字セットはutf8mb4 ですが、まだエラーがあります –

+1

[UTF-8のすべての方法]をチェックしてください(http://stackoverflow.com/questions/279170/utf-8-すべての方法を介して)。 UTF-8を使用していることをシステムに伝えることとは別に、実際に使用する必要があります。 –

関連する問題