我在这里构建了表单,当我在firefox 3.6.8上输入utf-8数据时,就像这样:
但它适用于IE.8
似乎在输入(或填充)输入框时,字符都是大写的。就像你正在举行班次并输入它一样。
有谁知道firefox有什么问题?
编辑:
这是一个简单的表格
<form enctype="multipart/form-data" action="print $_SERVER['PHP_SELF'];" method="post" accept-charset="utf-8">
<br><input name="f_name" type="text"><br>
</form>
答案 0 :(得分:0)
嗯。当我try this时,似乎工作得很好;我不熟悉阿拉伯语,但是当我输入表单时,似乎字符以小写而不是大写显示。以下是我正在使用的完整示例:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" accept-charset="utf-8">
<input name="f_name" type="text">
</form>
</body>
</html>
这适用于Mac OS X上的Firefox 3.6.8。你在运行什么平台?您是否在其他输入框中看到此问题,例如在Google上?
您可能还想检查Content-Type
发送的编码。如果您使用Content-Type: text/html; charset=utf-8
,一切都会有效。如果您以某种方式丢失<meta charset="utf-8">
标题,添加Content-Type
标记也会很有帮助。
答案 1 :(得分:0)
在提交任何内容之前输入表单字段时会出现什么情况?因为如果是这样,问题中没有UTF-8。 Web浏览器端的字符串纯粹基于Unicode;只有当您将它们从浏览器移动到服务器或返回时,编码才能发挥作用。
我的猜测是一个简单的字体问题。很明显,从您的屏幕截图中,Firefox使用的是与IE不同的字体,也许该字体是没有正确支持阿拉伯语所需功能的字体,如负责选择每个字符的正确字形变体的上下文连字。检查样式表并在必要时使用Firebug以找出正在应用于该输入的字体。
accept-charset="utf-8"
基本上没用,因为IE处理错了。它使用UTF-8作为后备编码(对于不适合页面当前字符集的字符)而不是 only 编码。
要获取以UTF-8格式提交的表单,您必须确保使用text/html;charset=utf-8
标题和/或Content-Type
标记将包含该表单的页面作为<meta>
投放。< / p>
action="print $_SERVER['PHP_SELF'];"
我假设您错误地粘贴了该值,并且该值实际上位于<?php ... ?>
标记中,否则该表单根本不起作用。
这是一个HTML注入漏洞,可能导致跨站点脚本攻击。您应始终使用htmlspecialchars()
将要注入的字符串HTML编码为HTML文本内容或属性值。