java - 如何指定我想要的 UTF-8 版本(在 Java 中)?

标签 java encoding

由于一些尴尬的遗留代码,我需要将一些非英语文本作为明显采用 UTF-8 编码的 ansi/ascii 字符串传递。在大多数情况下,这工作正常(我正在使用 URLEncoder)。但是,现在我需要它能够在不同的情况下输出不同版本的UTF-8,但我不知道该怎么做。

例如,该字符可以通过以下方式进行 UTF-8 编码:

大
%u5927
大
%E5%A4%A7

但是似乎没有谈论不同的版本,好像没有什么区别。我知道 URLEncoder 不执行第二个版本,因为 & 是保留字符,但第二个版本是我在某些情况下需要的。如何将文本转换为我想要的特定版本?

具体来说,它被传递到一个 .jsp,该 .jsp 包含一个名为 displaytag 的库,该库可以处理数据并显示表格,而无需太多开发人员输入,但它似乎没有任何用于设置编码的选项。我知道上面列表中的第二个编码(作为 ansi/ascii 传递)可以正确显示,而无需更改 .jsp,但这对我来说是最安全的选择。我只需要这样就可以了。

最佳答案

第一个是十六进制的 unicode 代码点,是 URL 编码的,第二个是十进制的,是 HTML/XML 实体形式。

从未将其用于您的目的,但我认为 StringEscapeUtils escapeHtml 或 escapeXml 应该为您提供第二种形式。

顺便说一句,第二种形式也有十六进制版本:

第三个看起来像是由非 utf-8 感知函数进行的转换,该函数已转换 utf-8 中分别构成单个代码点的三个字节。在我看来,第三个是不正确的,因为你无法看出它是三个 ascii 字节还是实际上是 utf-8。

关于java - 如何指定我想要的 UTF-8 版本(在 Java 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6620343/

相关文章:

java - 获取图像分辨率 ( theBufferedImage )

Java, lambda : How to find a List from a Collection of Lists with different Types?

java - 使用jaxb读取xml文档

java - Tomcat/Linux 上的 UTF-8 和 Servlet

c# - 在 SQL Server 中转换为二进制后如何在 C# 中恢复字符串

java - Eclipse UTF-8-奇怪的字符

java - 浏览文件夹对话框

java - 语法写作初学者指南

Node.js 使用 Express 在 HTTP POST 上以 multipart/form-data 形式写入 jpeg 文件

java - Java中通过编码将char转换为十六进制