2010-12-14 8 views
2

I Datenbanktabelle haben:versucht, Daten zu entschlüsseln (Export Abs MySQL)

DROP TABLE translation_en_lt; 
CREATE TABLE translation_en_lt (
    id INTEGER, 
    lt_translation WIDEMEMO BLOBBlockSize 102400 BLOBCompressionAlgorithm ZLIB BLOBCompressionMode 9 
); 

, die erzeugt wurde unter Verwendung von AbsManager (Absolute Datenbankmanager, Delphi). Es scheint jedoch veraltet zu sein und die Syntax ist für das aktuelle MySQL ungültig. Dann habe ich diesen Dateneingabe haben:

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

Der Wert für diese Zeile, wie korrekt in der AbsManager angezeigt ist pasislinkti. base64_decode('cABhAHMAaQBzAGw=') gibt jedoch p�a�s�i�s�l zurück [base64_encode('pasislinkti') gibt cGFzaXNsaW5rdGk=] zurück.

Wie bekomme ich "Pasislinkti" von MimeToBin('cABhAHMAaQBzAGw=')? Hat es etwas mit der Codierung zu tun, zlib (WIDEMEMO BLOBBlockSize 102400 BLOBCompressionAlgorithm ZLIB BLOBCompressionMode 9)?

Ich habe Kommentar zu sagen:

14:24 VoVo64: Typ: sieht aus, als ob die Base64-codierte Daten sind eigentlich UCS-2 Little-Endian. Dekodierungs cABhAHMAaQBzAGw = Ergebnisse HEX in 70 00 61 00 73 00 69 00 73 00 6c

Ich habe aber bereits versucht iconv('UTF-16', 'UTF-8', base64_decode('cABhAHMAaQBzAGw=')) die resultierten:

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

I auch versucht: mb_convert_encoding($u, 'UCS-2LE', 'UTF-8'), mb_convert_encoding($u, 'UCS-2', 'UTF-8'); beides hat nicht funktioniert.

Antwort

3

Diese sind Base64-Strings:

cABhAHMAaQBzAGw= -> pasisl 
cGFzaXNsaW5rdGk= -> pasislinkti 

Ich denke, Ihre Daten irgendwo abgeschnitten wird. Sie sollten nach einer MimeToText() - Funktion in Ihrem Datenbanksystem suchen. Ich würde versuchen, die Daten in CSV auszugeben und laden Sie das in MySQL mit LOAD DATA INFILE. Wahrscheinlich müssen Sie die Tabellenschemas von Hand umschreiben. Die BLOBBlockSize .... scheint für die Komprimierung dieser Daten zu sein. Ihre neue Tabelle benötigt etwas mehr Platz, oder Sie können die MySQL-Funktion Compress() verwenden.

So etwas sollte funktionieren:

CREATE TABLE translation_en_lt (
    id INTEGER, 
    lt_translation MEDIUMTEXT, 
    PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8