2016-07-07 7 views
1

MySQLデータベースのフィールドから収集したデータを保存しようとしています。テキストにはポーランド語の文字がいくつか含まれていますが、Livecodeはすべてのポーランド語の文字を '?'として送信します。ここに私のコードの一部です:MySQLデータベースのUTF-8データをLivecodeに保存する方法

  1. は、変数

    を宣言TTITLE にフィールド "タイトル" のunicodeTextを置くTTITLE

  2. にuniEncode(TTITLE、 "UTF8")を入れデシベルにこれを送ります: '& TTITLE & "" tSQLStatement revExecuteSQL gConnectionID、tSQLStatement、 "SET NAMES 'UTF8'" へ

    プット "SET NAZWA = magazyn UPDATE"' を

たとえば、単語 "łąka"は "?? ka"として保存されます。私はuniEncode、uniDecodeを試してみましたが、すべてが間違っています。

答えて

0

は、任意のエンコーダ/デコーダを使用しないでください。彼らは混乱に加わるだけです。

UTF8/utf8mb4を使用しようとするときは、疑問符(定期的なものではなく、黒ダイヤ)を参照してください場合は、格納されるべき

  • バイトはUTF8としてエンコードされていません。これを修正してください。 (それを修正することができるエンコーダの退治。)データベース内
  • カラムはCHARACTER SET utf8(又はutf8mb4)です。これを修正してください。
  • また、読み取り中の接続がutf8であることを確認してください。私は "Livecode"の詳細を知らない。そのドキュメントを見てください。何も見つからない場合は、接続後にこのSQLを実行してください:SET NAMES utf8
+0

私はキャラクタ・セットUTF8を使用しない方法リック、から収集されたすべてのデータが含まれていますか?私のコードを見ると、SET NAMESを使いました。 dbコードへの接続をオープンする必要がありますか? –

+0

テーブルスキーマ( 'SHOW CREATE TABLE'または同等のもの)を見てください。列定義で 'CHARACTER SET ... 'と言うこともあれば、テーブル定義上でしか記述できないこともあります。 –

0

データベースの列がutf8エンコードに設定されていることを確認してください。

LiveCodeで始まる7 すべてフィールドのテキストは、ユニコード、特にUTF-16です。あなたが任意の外部ファイルまたはデータストアに出テキストを送信する前に、あなたはどんなフォーマットあなたがそれを保存したいUTF-8(またはとしてそれをエンコードする必要があり、このためLiveCode textEncode()関数を使用します。

put textEncode(field "Title","utf-8") into tTitle 
put "UPDATE magazine SET nazwa = :1" into tSQLStatement 
revExecuteSQL gConnectionID, tSQLStatement, "tTitle" 

注意:また、使用することをお勧めします:SQLコードインジェクション攻撃のリスクを軽減するためにN変数の置換方法を

をあなたはUTF-16に戻って変換するには、データベースの使用textDecodeからデータを読み込むとき:

put textDecode(tRawDataFromDB,"UTF-16") into old tTitle 
+0

すべての列とdbはutf8_general_ciです。私はuniEncodeを試しましたが、まだ何もありません:/ –

+0

私の謝罪、私は自分のコードで間違いを犯しました。 uniEncodeではなく、textEncode関数を使用します。これは非推奨です。これを修正するコード例を編集しました。 – Devin

0

問題が解決しました。

get the unicodeText of field "Title" 

プットunidecode(それは、「ポリッシュ」)TTITLE

に、それは奇妙なバージョンのポーランド文字が保存されますが、ダウンロードするために、私はこのコードを使用しています:

set the unicodetext of fld "List" to uniencode(tList,"polish") 
ここではコードです

のTList変数は、MySQL

関連する問題