【发布时间】:2019-01-22 04:18:27
【问题描述】:
我想我到处都看过了。在 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);
【问题讨论】:
-
你对non UTF-8的定义是什么?
-
UTF-8 是一种字符编码。它将字符(没有任何编码)转换为字节。不确定“非 UTF-8 字符串”是什么意思,因为字符串包含字符,而不是字节。
-
当然你需要将它构造为字节。检查这个问题:stackoverflow.com/questions/16031620/…
-
Java 本身中的字符串和字符始终是 UTF-16... 编码仅在转换为字节或从字节转换时才相关。你到底想达到什么目标?
-
@Eugene 这是一个实现细节。 String 的公共 API 允许获取字符,并且支持所有 Unicode 代码点。这些代码点如何在内部存储在这里并不重要。