2010-12-14 10 views
2

私は、データベーステーブルを持っている:(MySQLへの腹筋をエクスポートする)データをデコードしようとしている

AbsManager(絶対データベースマネージャ、デルファイ)を使用して生成された
DROP TABLE translation_en_lt; 
CREATE TABLE translation_en_lt (
    id INTEGER, 
    lt_translation WIDEMEMO BLOBBlockSize 102400 BLOBCompressionAlgorithm ZLIB BLOBCompressionMode 9 
); 

。しかし、古くなっているように見えますが、現在のMySQLでは構文が無効です。それから私は、このデータエントリがあります。AbsManagerに正しく表示されているように、

INSERT INTO translation_en_lt (lt_translation) values (MimeToBin('cABhAHMAaQBzAGw=')); 

この行の値を、pasislinktiあります。ただし、base64_decode('cABhAHMAaQBzAGw=')p�a�s�i�s�l [base64_encode('pasislinkti')を返します。cGFzaXNsaW5rdGk=]を返します。

「pasislinkti」をMimeToBin('cABhAHMAaQBzAGw=')から取得するにはどうすればよいですか?それはエンコーディング、zlib(WIDEMEMO BLOBBlockSize 102400 BLOBCompressionAlgorithm ZLIB BLOBCompressionMode 9)と関係がありますか?

私がコメントを言ってしまった:

午前14時24分VoVo64:男は: base64でエンコードされたデータは、実際にUCS-2 リトルエンディアンであるかのように見えます。私も試みた

Notice: iconv(): Detected an incomplete multibyte character in input string in /var/www/ssl/pp.php on line 2 pasis 

:70 00 61 00 73 00 69 00 73 00 6C

しかしでcABhAHMAaQBzAGw = HEX結果と復号 私は既にもたらしiconv('UTF-16', 'UTF-8', base64_decode('cABhAHMAaQBzAGw='))試みたmb_convert_encoding($u, 'UCS-2LE', 'UTF-8'), mb_convert_encoding($u, 'UCS-2', 'UTF-8')。どちらもうまくいかなかった。

答えて

3

これらは、Base64文字列です:

cABhAHMAaQBzAGw= -> pasisl 
cGFzaXNsaW5rdGk= -> pasislinkti 

は、私はあなたのデータはどこかで切り捨てられていると思います。データベースシステムでMimeToText()関数を探す必要があります。私は、データをCSVにダンプして、LOAD DATA INFILEを使ってMySQLにロードしようとします。テーブルスキーマを手作業で書き直す必要があるでしょう。 BLOBBlockSize ....は、このデータを圧縮するためのものです。あなたの新しいテーブルはもう少しのスペースを取るか、MySQLのCompress()関数を使用して調べることができます。

このような何か作業をする必要があります:

CREATE TABLE translation_en_lt (
    id INTEGER, 
    lt_translation MEDIUMTEXT, 
    PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 
関連する問題