使用无包装保存textarea会导致奇怪的字符到php

时间:2014-02-20 14:25:54

标签: php mysql

我有一个textarea用户输入查询。所以我用这个来阻止包装:

textarea{
    white-space:nowrap;
}

所以,然后我输入一个这样的SQL

SELECT
   field1
FROM my table

这已正确保存在mysql utf8_general_ci字段中,但当我尝试var_dump()保存的内容时,会显示:

SELECT
 Ã  Ã field1
FROM my table

如果我从textarea中删除css,它可以正常工作。但我需要不包装。

1 个答案:

答案 0 :(得分:3)

通过静默地将所有空格转换为非中断空格(white-space:nowrap),浏览器似乎(很差)实现 

在ISO-8859-1和Windows-1252等单字节字符集中,此字符为0xA0

然而,它被编码为UTF-8编码。

此字符在转换为UTF-8时,恰好转换为双字节序列0xC2A0,当“强制转换”回单个字符时,0xC2后跟0xA0 ,或者Ã后跟[NBSP](第二个字节与原始字符相同,大概是巧合,不要带任何意义)

我建议使用旧的,更兼容的禁用包装方式:

<textarea wrap="off">...</textarea>

这将禁用包装,你应该停止看到那些奇怪的字符。