MrB*_*ide 3 unicode jsp character-encoding
我正在尝试显示存储在数据库中的字符,即unicode字符\ u0096.由于一个奇怪的Windows-vs-web-browser事物,这是unicode标准中的控制字符,但是网页将它显示为En Dash.请参阅@ AlanMoore的回答有些UTF-8字符未显示在浏览器上.
我有以下jsp文件.我想将\ u0096字符显示为En Dash(其他前端解决方案可以实现的壮举).
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ page session="false" trimDirectiveWhitespaces="true"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!doctype html>
<html>
<c:set var="control" scope="request" value= "b"/>
<c:set var="endash" scope="request" value="a"/>
<% request.setAttribute("control", "\u0096");%>
<% request.setAttribute("endash", "\u2013");%>
Match? 0096: <c:out value="${control}"/> 2013: <c:out value="${endash}"/>
Run Code Online (Sandbox Code Playgroud)
我得到的输出是
Match? 0096: 2013: –
Run Code Online (Sandbox Code Playgroud)
我想要的是
Match? 0096: – 2013: –
Run Code Online (Sandbox Code Playgroud)
由\0096U + 0096 表示的字符明确地是Unicode中的控制字符,具有未定义的含义.这不应该与在windows-1252编码中,字节 0x96表示U + 2013 EN DASH 这一事实相混淆.
因此,不应该尝试将不可见字符呈现为可见,您应该简单地用 U + 2013 替换 U + 0096,或者根据实际设置,可能转换从数据库获得的数据,从windows-1252转换为例如UTF -16.数据库不太可能包含U + 0096.相反,它包含的字节现在被误解为UTF-16,但实际上是windows-1252编码的字符表示.
| 归档时间: |
|
| 查看次数: |
2410 次 |
| 最近记录: |