Php 将其发送到数据库时出现字符问题

Php 将其发送到数据库时出现字符问题,php,mysql,utf-8,character-encoding,oscommerce,Php,Mysql,Utf 8,Character Encoding,Oscommerce,我对瑞典语字符(与英语字母表不同的字符)以及如何将其插入数据库有疑问 我使用osCommerce,iso-8859-1在管理和目录页面中都设置为字符集。如果我运行显示变量数据库中的字符集是latin1 以下是phpinfo中的一些服务器设置: iconv.input_encoding ISO-8859-1 iconv.internal_encoding ISO-8859-1 iconv.output_encoding ISO-8859-1 根据主机支持页面,Apache将UTF-8中的所有

我对瑞典语字符(与英语字母表不同的字符)以及如何将其插入数据库有疑问

我使用osCommerce,
iso-8859-1
在管理和目录页面中都设置为字符集。如果我运行
显示变量
数据库中的
字符集是
latin1

以下是phpinfo中的一些服务器设置:

iconv.input_encoding ISO-8859-1

iconv.internal_encoding ISO-8859-1

iconv.output_encoding ISO-8859-1
根据主机支持页面,Apache将
UTF-8
中的所有页面作为默认页面交付,并且可以通过添加

AddDefaultCharset ISO-8859-1
.htaccess
文件中

当我去管理员那里更新产品时,不同输入字段中的所有字符都会从数据库中提取出来,并按照它们的设想显示出来。但当我更新产品时,所有特殊字符都会转换为如下所示:

  • å变成¥
  • ä变成Ã
  • ö变成Ã
如果我添加新产品,也会发生同样的情况

当我使用phpmyadmin查看数据库时,会显示“已损坏”字符,因此不仅仅是网页将其翻译错误

我的主机最近宣布他们将对php进行一些更新,所以我认为这与此更新有关。几天前一切都很顺利

我不确定我的previos php版本,但现在我有5.2.17,mysql是4.0.27标准

有人能帮我解决这件事,告诉我需要做什么吗


是否有一个简单的解决方案,我需要将数据库和网页转换为utf-8,还是需要执行其他操作?

听起来web浏览器正在以utf-8而不是ISO-8859-1发送表单。或者应用程序(或MySQL客户端)正在将文本转换为UTF-8,然后再将其写入数据库。您可以通过执行一个简单的
echo bin2hex($text)来检查
$text
的编码方式

如果问题出在浏览器上,请使用表单标记中的属性设置用于发送表单的字符编码。即:

<form action="..." method="POST" accept-charset="ISO-8859-1">
    ....
</form>

....

听起来web浏览器是用UTF-8而不是ISO-8859-1发送表单的。或者应用程序(或MySQL客户端)正在将文本转换为UTF-8,然后再将其写入数据库。您可以通过执行一个简单的
echo bin2hex($text)来检查
$text
的编码方式

如果问题出在浏览器上,请使用表单标记中的属性设置用于发送表单的字符编码。即:

<form action="..." method="POST" accept-charset="ISO-8859-1">
    ....
</form>

....

谢谢您的回复。没有人做任何事,问题就迎刃而解了。所以这一切都有点可疑。但是我发现你的答案很有趣,如果这个问题再次出现,我会尝试。我想这可能很难重现,因为这个问题可能在很大程度上取决于浏览器版本和修补级别感谢你的回答。没有人做任何事,问题就迎刃而解了。所以这一切都有点可疑。但是我发现你的答案很有趣,如果这个问题再次出现,我会尝试一下。我想这可能很难重现,因为这个问题可能在很大程度上取决于浏览器版本和修补级别