gpt4 book ai didi

Java:搜索错误编码的字符串而不修改它

转载 作者:行者123 更新时间:2023-12-01 11:34:56 25 4
gpt4 key购买 nike

我必须在文档中找到用户定义的字符串(使用Java),该字符串存储在数据库中的 BLOB 中。当我搜索带有特殊字符(“Umlaute”、äöü 等)的字符串时,它失败,这意味着它根本不返回任何位置。而且我不允许将文档的内容转换为 UTF-8(这本来可以解决此问题,但会引发一个新的、甚至更大的问题)。

一些附加信息:文档的内容以“ISO-8859-1”(Latin1)中的字符串形式返回。这是一个字符串的示例:

Die Erkenntnis, daà der Künstler Schutz braucht, ...

它应该是这样的:

Die Erkenntnis, daß der Künstler Schutz braucht, ...

如果我搜索 KünSTLer ,它将找不到它,因为它会查找 ü 但只找到 Ë

是否可以将 KünSTLer 转换为 KünSTLer,以便我可以搜索错误的编码版本?

注意:我们使用 Hibernate 框架进行数据库访问。文档内容的原始 Getter 返回一个 byte[]。然后通过调用返回字符串

new String(getContent(), "ISO-8859-1")

这里的问题是,我无法将其更改为 UTF-8,因为它会弄乱我们基于以这种方式传递数据的第三方应用程序的应用程序的其余部分。

最佳答案

好吧,看起来我已经找到了一种故意搞乱编码的方法。

new String("Künstler".getBytes("UTF-8"), "ISO-8859-1")

通过获取 UTF-8 格式的 KünSTLer 字符串的字节,然后创建一个新字符串,告诉 Java 这是 Latin1,然后将其转换为 KünSTLer。这是一个非常糟糕的黑客行为,但似乎效果很好。

关于Java:搜索错误编码的字符串而不修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30099422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com