我“继承”了osCommerce 2.2、PHP4和MySQL4设置,这给我带来了麻烦。问题是字符编码。虽然表被定义为包含UTF8,但它们实际上包含latin1。要将一些全新的东西混合到其中,似乎旧的编码器在建立到数据库的连接时通过设置SET CHARACTER SET 'utf8'手动地改变了这一点。
现在看起来是这样:
UTF8,但实际上包含latin1。UTF8。ISO-8859-1 (又名latin1 )的形式交付这个设置直到一周前提供者更改了一些东西(他们实际上完全否认接触数据库或任何其他东西,但他们有服务器问题)。
有问题的部分是德语特殊字符öäüß的显示是正确的,但是当您想将它们插入数据库时,整个osCOmmerce会话就会中断,只有文本才会插入该字符。
Das _ä_ ist ein UmlautDas _当建立连接时,当我通过将字符集设置为latin1来更改手动入侵时,每个插入都很好,但是数据库只是传递?而不是特殊字符。
我不知道如何解决这个问题,如果我将数据库列更改为latin1,则会丢失所有特殊字符,如果更改连接上的编码,则显示或插入失败。我完全没有想法了。
发布于 2011-10-22 21:06:08
当您更改另一个字符集中的数据时,必须首先将其更改为blob,然后更改为目标字符集(latin1)。如果不这样做,mysql将为您进行转换,而且您也不会这样做,因为您已经在latin1中获得了数据?
使用连接中的set chatacter set (即php)时,mysql会自动将表中的所有数据转换为连接的字符集。
发布于 2011-10-23 11:22:58
不优雅,但通常是有效的解决方案:
https://serverfault.com/questions/323966
复制相似问题