PHP签名之前的奇怪角色?

时间:2010-01-14 18:55:32

标签: php character-encoding mojibake

出于某种原因,当我在表单上的文本字段中输入£时,我得到一个£76756687这个奇怪的字符?

2 个答案:

答案 0 :(得分:7)

正如您所怀疑的,这是一个字符编码问题 - 是否设置了使用UTF-8字符集的页面? (你真的不能错过这种编码。)另外,你可能想要在出路时对英镑符号进行实体编码(£

作为示例字符集(对于表单页面和HTML电子邮件),您可以使用:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

那就是说,用户是否有充分的理由要输入货币符号?将它作为静态文本项或文本字段左侧的下拉列表是否更好? (如果我正在谈论屁股而你正在使用自由形式的textarea或summat,请随意忽略。)

答案 1 :(得分:4)

您可能使用UTF-8作为字符编码,但未正确声明输出。因为£字符(U + 00A3)以UTF-8编码,带有0xC2A3。当使用ISO 8859-1进行解释时,该字节序列表示两个字符£

所以你只需要正确指定你的字符编码。在PHP中,您可以使用header functionContent-Type header field设置正确的值,如:

header('Content-Type: text/html;charset=utf-8');

但请确保在输出之前调用此函数。否则,HTTP标头已经发送,您无法修改它。