我在我的网页中使用 
,当在不同的编码之间切换时,它变得奇怪,从下面的屏幕截图中可以看到,它变成中文字符,使用其他编码,它变为{{ 1}}角色。对于间距,我不再使用& nbsp了,但是我的JSF页面,我需要一个空标签,所以我使用
accented A
现在我不确定我可以用上面的代码代替什么,以避免在我的页面上出现这些奇怪的字符。请帮忙
答案 0 :(得分:2)
您需要通过<f:view encoding>
控制JSF视图编码,而不是在JSF的控件之外手动设置HttpServletResponse#setCharacterEncoding()
。否则,JSF仍然使用默认的UTF-8编码编写响应,并且您基本上只是告诉浏览器它是否采用不同的编码,因此浏览器会错误地解释它。
<f:view encoding="#{bean.encoding}">
至于您所看到的奇怪角色,the
exist in UTF-8 of bytes 0xC2
and 0xA0
。当这些字节是由接收者(读取:webbrowser)错误地使用ISO-8859-1解释时,那么你确实分别得到its codepage layout字符Â
和另一个不间断的空格。当使用KSC5601错误地解释这些字节时,你会得到EUC-KR codepage layout字符혻
。
答案 1 :(得分:1)
对于 
,请使用值 
答案 2 :(得分:0)
对于初学者, 
最后应该有一个分号:
然而,我认为这不会导致这个问题。
是否有理由不能简单地使用“”或将其完全留空?
h:outputLabel value=" "
h:outputLabel value=""
你不应该使用它来造型。相反,你可以简单地说:
button.myCancelButton { margin-left:40px; }
radio.myColumnsRadio { margin-left:40px; }
此外,如果您希望您的单选按钮在它们之间具有相等的间距,您可以将它们包装在具有固定宽度的容器中,或者将它们放在表格中:
span.myRadioContainer { width:100px; display:inline-block; }
或(HTML解决方案,不确定JSF如何工作):
<table>
<tbody>
<tr>
<td><input type="radio"/></td>
<td><input type="radio"/></td>
</tr>
<tr>
<td><input type="radio"/></td>
...
</tr>
</tbody>
</table>