-1

ODK Aggregate を介して MySQL データベースに収集された数か月分のデータが読み取れない状況があります。

データはグルジア文字ですが、latin1 文字セット/照合順序でデータベースに送信されました。

データ管理者は数日前までこの問題に気付きませんでした。私は、彼らがこれらのキャラクターを使って調査を行っていることを知らされていませんでした. 2) 将来のデータが読み取り可能であることを確認する方法は?

SELECT HEX(column) FROM テーブルを実行できます

16進出力を取得しますが、これは次のようになります。

E18397E18391E18398E1839AE18398E183A1E18398
_
_

ご覧のとおり、最後の行は正しく見えますが、他の行はそうではありません。latin1 を使用してテスト テーブルを作成し、グルジア文字を挿入しようとすると、警告が表示されました: #1366 Incorrect string value: '\xE1\x83\x93\xE1\x83\x93...' for column 'georgian_text' at row 1

Tomcat のログには何も表示されませんが、レコードが送信されるたびに Aggregate で同じエラーが発生したと思います。

私の質問は: 最初の行の 16 進数を何か有用なものに変換できますか?

4

3 に答える 3

0

3F は char '?' です。

これは損失の多いデータのように見えます。このデータを読み取り可能なデータに変換することはできません。

これを回避するには、アプリケーションのすべてのレイヤーで同じ文字セットを使用する必要があります。UTF-8 が一般的な選択肢です。

于 2015-08-11T16:16:24.507 に答える
0

失われたものを回復することはできませんでしたが、文書化のための答えは、最初から /etc/my.cnf に常に次のものを用意して、これらの問題が最初から発生しないようにすることです。

character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
于 2016-08-05T13:34:24.127 に答える