我有以下形式的字符串(大约 1-5Kb):
FF,A3V,X7Y,aA4,....
lzw 非常好地压缩这些,但包含土耳其字符。然后将它们提交到 MySQL 数据库。
有时 MySQL 可能会“播放”但无法正确提交这些内容,并放置问号“?”代替土耳其字符。即使您正确定义了文本区域,他们也可以执行此操作。导出并重新导入表可以解决这个问题。这对于我的测试数据库来说很好,但当它上线时我不满意。
因此,我正在寻找 lzw 的替代方案,它将进行压缩,但仅使用普通字母/数字等。
有谁知道避免土耳其字符(以及任何其他非标准字符)的公共(public)域压缩方法?谁能向我指出一些 javascript 代码(或者我可以转换的 c++ 或 c#)?
最佳答案
对评论中所说的内容进行一些扩展...存储字节字符串,例如压缩算法的输出通常包含在 VARCHAR
或 CHAR
或 TEXT
列无效。
这些列类型不适用于字节字符串,它们仅适用于有效字符的字符串。并非每个字节串都包含任何给定字符集中的有效字符串...并且 MySQL 不会允许无效字符(对于某些字符集,“字符”和“字节”之间的相关性不是 1 :1)。
在美好的过去™,两者是可以互换的,但现在情况不再是这样了(并且在某种程度上,已经有一段时间没有这样了)。
如果您的列类型是 BINARY
或 VARBINARY
或 BLOB
,则问题应该消失,因为这些数据类型适用于二进制数据。
关于Javascript - 用于数据库条目的 lzw 压缩的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30570824/