一尘不染

在一个jsp中显示\ u0096

jsp

我试图显示存储在数据库中的字符,它是Unicode字符\u0096。由于Windows-VS-Web-Browser的问题,这是Unicode标准中的控制字符,但是网页会将其显示为EnDash。有关某些UTF-8字符未显示在浏览器上的信息,请参见@AlanMoore的答案。

我有以下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}"/>

我得到的输出是

Match? 0096:  2013: –

我想要的是

Match? 0096: – 2013: –

阅读 325

收藏
2020-06-08

共1个答案

一尘不染

用表示的字符\0096U + 0096无疑是Unicode中的控制字符,具有未定义的含义。这不应与以下事实混淆:在Windows-1252编码中,字节 0x96表示U + 2013 EN DASH。

因此,与其尝试将不可见的字符呈现为可见,不如 U + 0096 替换 为U + 2013,或者根据实际设置,也许 转换
从数据库中获得的数据,将Windows-1252转换为UTF -16。该数据库不太可能包含U +
0096。相反,它包含的字节现在被误解为UTF-16,但实际上是Windows-1252编码的字符表示。

2020-06-08