gpt4 book ai didi

java - 如何在 Java 中生成非 UTF-8 字符串/字符以进行测试?

转载 作者:行者123 更新时间:2023-12-02 10:54:47 26 4
gpt4 key购买 nike

我想我到处都看过了。在 Ruby 中找到了一些示例,但在 Java 中却找不到任何连贯的示例。

如何在 Java 中生成非 UTF-8 字符串/字符以进行测试?

具体来说,我有一个 json 文件,其中包含与我们使用的某些翻译机制相关的不同键值(因此,涉及很多语言),这个 json 已解析使用我们拥有的一些映射器。

我想检查映射器是否返回正确的值,以防 json 中遇到非 UTF 数据。

所以,我想以如下方式使用它:

String expectedValue = "FooBarNonUtf8";
String actualValue = jsonReader.readFrom("file", "key"); //should parse non-UTF correctly
assertEquals(expectedValue, actualValue);

最佳答案

在 C/C++ 编码灾难之后(在历史上的那个时刻),Java 做出了以下设计决策:

  • String、char、Reader、Writer 用于处理 Unicode 文本,char 为 UTF-16,两个字节。
  • byte[]、InputStream、OutputStream 用于二进制数据,给定一些编码/字符集,可以是文本。

所以你实际上只能滥用 String/char,并且几乎肯定会出现损坏的数据(某些字符对于 UTF-* 具有特殊的结构含义)。

解决方案是将二进制数据编码为 Base64 等。

byte[] b = ...
String s = Base64.getEncoder().encode(b);

有一些不同的编码器,您可以设置换行、填充等属性。

或者您可能更喜欢使用十六进制表示。

关于java - 如何在 Java 中生成非 UTF-8 字符串/字符以进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51856137/

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