java - 是否有一个特殊的字符集将所有可能的字节值映射到有效字符并映射回来?

标签 java string pdf character-encoding binary

我开始研究 PDF 规范。 PDF 文件是文本和二进制数据的混合体。为了进行一些快速而肮脏的编辑,我想将文件读入字符串,查找并替换一些文本部分,然后将字符串写回文件,同时保留除我替换的字节之外的所有字节。

我的第一次天真的尝试如下所示:

byte[] orignalBytes = ...; // read bytes from file
String content = new String(originalBytes, StandardCharsets.US_ASCII);
// do some find and replace (only working with ASCII chars)
byte[] changedBytes = content.getBytes(StandardCharsets.US_ASCII);

这会失败,因为引用 String 构造函数的 javadoc:“此方法始终用此字符集的默认替换字符串替换格式错误的输入和不可映射的字符序列”。

我正在寻找一个特殊的字符集,它映射 US_ASCII 字符集中的所有字符,此外“在从 byte[] 到 String 来回转换时保留所有其他字节的值”。

我只需要能够使用 ascii 字符。

我现在正在考虑编写自己的字符集,但想知道类似的东西是否已经存在?

有什么想法或指示吗?

最佳答案

每个文本字符串都可以有自己的自定义编码。从长远来看,使用现有的 PDF 库将为您省去很多麻烦。

关于java - 是否有一个特殊的字符集将所有可能的字节值映射到有效字符并映射回来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465194/

相关文章:

c++ - 如何将给定的字行输入到以空格分隔的不同字符串中?

java - 为什么我在 String 源代码中看到构造函数,但在 JavaDocs 中却看不到?

arrays - 从 2d 数组中的类型 'char[100][100]' 错误分配给类型 'char *' 时,类型不兼容

java - 如何使用 iText 将越南语文本导出为 PDF

pdf - Phantomjs zoomFactor - 将光栅化缩放到特定大小

java - do while 循环错误

java - Spring - Mongodb 配置类路径

java - Eclipse 在项目中显示错误,但我找不到它们

java - Chrome 选项 - Selenium 3.10 - NoSuchMethodError : com. google.common.collect.ImmutableList.toImmutableList()

ms-access - Crystal Reports 11 - 添加了无用的空白页,仅添加了包含数据的组标题