データベースにいくつかの utf-8 文字列があり、それらは varbinary として保存されています。(通常、これは mediawiki データベースですが、それは重要ではないと思います)。一部の文字列の形状が良くないことがわかりました。
SELECT log_comment, CONVERT( log_comment
USING utf8 ) AS
COMMENT
FROM `logging`
WHERE log_id = %somevalue%
私はこのようにphpmyadminに出力テーブルを持っています:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| d093d09ed0a1d0a220d0a020d098d0a1d09e2fd09cd0add09a20393239342d39332e20c2abd098d0bdd184d0bed180d0bcd0b0d186d0b8d0bed0bdd0bdd0b0d18f20d182d0b5d185d0bdd0bed0bbd0bed0b3d0b8d18f2e2e2e |NULL |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
必要なのは、この文字列を読み取れるようにするか、正しいデータで新しい文字列をアップロードすることです。しかし、これは varbinary フィールドです。その中のデータを管理するにはどうすればよいですか?
UPD: phpmyadmin が各行の末尾にある 3 つのドットに対して 2e2e2e を自動的に追加したことがわかりました - それらは長すぎて表示できませんでした。元のバイナリ データは、興味のある方は、
d09fd0a02035302e312e3031392d3230303020d09ed181d0bdd0bed0b2d0bdd18bd0b520d0bfd0bed0bbd0bed0b6d0b5d0bdd0b8d18f20d0b5d0b4d0b8d0bdd0bed0b920d181d0b8d181d182d0b5d0bcd18b20d0bad0bbd0b0d181d181d0b8d184d0b8d0bad0b0d186d0b8d0b820d0b820d0bad0bed0b4d0b8d180d0bed0b2d0b0d0bdd0b8d18f20d182d0b5d185d0bdd0b8d0bad0be2dd18dd0bad0bed0bdd0bed0bcd0b8d187d0b5d181d0bad0bed0b920d0b820d181d0bed186d0b8d0b0d0bbd18cd0bdd0bed0b920d0b8d0bdd184d0bed180d0bcd0b0d186d0b8d0b820d0b820d183d0bdd0b8d184d0b8d186d0b8d180d0bed0b2d0b0d0bdd0bdd18bd1
とにかく、これらの文字列には、行末に非 utf シンボルが含まれています。
SELECT log_comment,CAST(log_comment AS CHAR CHARACTER SET utf8) AS COMMENT
FROM `logging`
WHERE log_id = %somevalue%
最後の記号は � - 私にとっては、黒いひし形に白い疑問符が入っているように見え、最後の 20 ~ 30 文字が欠落しているためです。