我有一个保存价格进入数据库,但WHN用户输入£标志它显示为A£用叩诊口音在一个表格(不知道怎么写其中的一个).当我在phpmyadmin手动输入时,它不会这样做.价格领域的联盟是latin1,它是一个varchar所以我没有看到任何问题.在PHP MySQL查询价格已经用htmlspecialchars和mysql_real_escape_string上,但我已采取THES关闭和问题仍然存在.
最后,不仅仅是以不同的方式显示£符号,它实际上是以不同方式将其保存到数据库中.我怎样才能解决这个问题?
这通常是由连接的字符集和字符串用户不同意引起的.例如,连接字符集可能返回UTF-8,PHP脚本可能会将字符串视为iso-latin-1,这会导致这种情况.我不确定如何在PHP中设置这些属性.
在mysqlCLI中,您可以使用SHOW VARIABLES以下命令查看各种属性:
mysql> show variables like '%char%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
我会开始朝那个方向看.这里的指示是,当您期待单个字符时,您会看到多个字符.超出7位范围的任何内容都将被编码为多个UTF-8八位字节.
UTF-8详细信息
0xA30xA3使用UTF-8编码产生字节0xC2,0xA30xC2和0xA3由异Latin-1的图示符表示"A£"| 归档时间: |
|
| 查看次数: |
4081 次 |
| 最近记录: |