当进入mysql时,英镑符号显示为A£

Jac*_*sor 1 php mysql

我有一个保存价格进入数据库,但WHN用户输入£标志它显示为A£用叩诊口音在一个表格(不知道怎么写其中的一个).当我在phpmyadmin手动输入时,它不会这样做.价格领域的联盟是latin1,它是一个varchar所以我没有看到任何问题.在PHP MySQL查询价格已经用htmlspecialchars和mysql_real_escape_string上,但我已采取THES关闭和问题仍然存在.

最后,不仅仅是以不同的方式显示£符号,它实际上是以不同方式将其保存到数据库中.我怎样才能解决这个问题?

D.S*_*ley 5

这通常是由连接的字符集和字符串用户不同意引起的.例如,连接字符集可能返回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详细信息

  • "£"是iso-latin-1代码点 0xA3
  • 0xA3使用UTF-8编码产生字节0xC2,0xA3
  • 0xC20xA3由异Latin-1的图示符表示"A£"