我有一个HTML格式:
<p> Select beer characteristics </p>
<p>
Color:
<select name="color" size="1">
<option value="light"> light </option>
<option value="amber"> amber </option>
<option value="brown"> brown </option>
<option value="dark"> dark </option>
</select>
<br><br>
</p>
<input type = "submit" value="submit">
有什么建议吗?
答案 0 :(得分:2)
您在HTML代码中使用了错误的引号字符。
你可能拥有的是这样的东西:
<option value=“light“>
除非您使用正确的双引号(“)或单引号(')来包含属性,否则浏览器会将值解释为“light“
而不是light
,这就是它发送到的内容服务器。
(请注意,这在XHTML中无效,其中只允许使用引用属性,但在纯HTML中指定<foo bar=value>
格式的属性有效。)
奇怪的输出可以解释为您的浏览器和服务器使用不同的编码:一个使用ISO-8859-1,另一个使用UTF-8。左双引号字符的UTF-8序列为0xe2 0x80 0x9c
,当使用ISO-8859-1读取时,恰好提供您提到的两个字符。 (第三个落在一个未使用的块中,然后静默地丢弃。)
这是一个需要补救的单独问题,请参阅其他答案以获取处理它的提示。
答案 1 :(得分:2)
这是浏览器中错误编码的结果,很可能没有在响应中设置。您可以尝试使用:
response.setContentType("text/html; charset=UTF-8");
答案 2 :(得分:2)
我确信这与字符编码或URL编码不匹配有关。
首先,确保指定字符集
<form action="..." method="..." accept-charset="UTF-8">
<select ...> ... </select>
</form>
如果客户端使用良好的编码(UTF-8)正确发送所有内容,则必须配置服务器端以读取数据。
我不知道你正在使用什么,但有一种方法是:
URLDecoder.decode(formParams, "UTF-8");
可以肯定的是,您也可以在HTML文件中添加编码:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
</head>
编辑:确保正确发送和接收所有内容。
从服务器发送HTML文件:
1)确保设置:
内容类型:text / html;字符集= UTF-8
如果您要发送文件,请务必使用UTF-8编码保存文件。 如果您的HTML是生成的String,请使用:
PrintWriter writer = new PrintWriter(new OutputStreamWriter(httpOutputStream, "UTF-8"));
writer.print(string);
...
来自请求的URL以US-ASCII编码接收:
String urlEncodedString = new String(receivedBytes, "UTF-8");
String decoded = URLDecoder.decode(urlEncodedString, "UTF-8");
答案 3 :(得分:0)
使用wkhtmltopdf将xhtml转换为PDF时遇到了同样的问题 工具。
在我的HTML模板中添加<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
解决了这个问题。