2017-06-26 5 views
0

私はPHPとPostgreSQL(Laravel上に構築されている)に基づいたWebアプリケーションを持っています。 WebアプリケーションPostgreSQLデータベースは、UTF-8エンコーディングを使用します。ある時点で、別のサーバーでホストされている外部MS SQL Serverデータベースにデータを渡す必要があります。しかし、MS SQL Serverデータベースのテキストデータは、特に特殊文字が含まれている場合には、部分的にうんざりして読めなくなります。 MS SQL Serverのsysadminは、2バイトのUnicodeエンコーディングを使用していることを教えてくれました。私はそれに応じて変換する必要があります。2バイトのユニコードMSSQLデータベースにデータを渡す

質問 - このエンコードを正しく使用し、データをMS SQL Serverデータベースに書き込む前にエンコードするにはどうすればよいですか?

+1

'varchar'の代わりに' nvarchar'を使用する必要があります。 –

+0

挿入するときにUnicodeでエンコードするにはNを使います。このような 'INSERT INTOテーブル(textcolumn1、intcolumn1)VALUES(N'unicodé文字列 '、1)' –

+0

@JacobHのように、文字列リテラルの代わりにパラメータを使用する方が良いです –

答えて

0

様々な符号変換で遊んでた後、私は最終的に私の作品1を発見しました。

0

あなたは、文字エンコーディングを変更するmb_convert_encodingを使用することができます。

$message = "Héllo"; 
$new_message = mb_convert_encoding($message, "UTF-16"); 

コメントで与えられた例 - INSERT INTO table (textcolumn1, intcolumn1) VALUES (N'unicodé string', 1)が - 正しいです。残念ながら、準備されたステートメントでこれを行う方法はありません。 INSERT INTO table (textcolumn1, intcolumn1) VALUES (N?, ?)は機能しません。これは他の誰かを助けた場合に iconv('UTF-8', 'UCS-2LE', $string);

投稿:

関連する問題