Mar*_*ett 2 csv encoding jmeter utf-8
我从一个简单的文本文件中读取搜索词并将其发送到搜索引擎。\n它在英语中工作正常,但给了我???? 对于任何日语文本。\n混合英语和日语的文本确实会显示英语文本,所以我知道它正在阅读它。
\n\n我所看到的:
\n\n这是在我的 HTTP 的 POST 字段中。\n如果我设置 JMeter 对数据进行编码,它只会输入问号的百分比序列。
\n\n关于数据:
\n\n有趣的注释:\n我注意到一个有趣的巧合:如果有 15 个日语字符,那么我会得到 15 个问号,因此在某些时候它会被视为完整字符而不仅仅是字节。
\n\nJMeter CSV 数据集配置:
\n\n我尝试过的一些事情:\n - 尝试允许引用数据。它变成了其他奇怪的字符。\n - 添加了 -Dfile.encoding=UTF-8\n - 尝试对 POST 阶段进行编码,但它只是变成了一堆问号 %nn
\n\n我不确定读入 CSV 的每一行后如何“调试”。我认为它立即损坏了,但我不确定。
\n\n如果它只是在我引用它时被破坏,那么可能不是 ${TERM} 而是其他一些“字节”函数调用。我将开始检查这一点。我还没有对 JMeter 函数做任何事情。
\n\n12 月 24 日编辑:
\n\n调整:
\n\n一个新理论:
\n\n发现问题了,还有一个地方需要指定UTF-8。
在 HTTP 请求中,方法右侧,您还必须将内容编码设置为 UTF-8
是的,事后看来,这似乎是显而易见的,但有很多原因我认为没有必要。我的一些不正确的假设可能对其他正在调试的人有帮助,所以这里 - 我本来认为:
1:一旦文本以 Unicode 形式进入 Java,它就保持 Unicode 形式,并按 UTF-8 进出。显然不是在这种情况下。
2:我有点认为HTTP默认为UTF-8,除非你另有说明,但也许我只是习惯了XML,但假设这一点可能不是一个好习惯,也许HTTP默认为ISO-Latin1或其他东西,甚至如果有一个规范,也许人们不会遵循它。
3:如果我不具体说明,我认为“不造成伤害”的方法是传递字符,并让另一端的接收者处理它。又错了!
(好吧,所以点 1、2 和 3 有点重叠)
4:即使我的 HTTP 请求 POST,我仍然尝试了编码复选框。我当然认为这会对它进行编码,但我得到的只是问号的重复%十六进制,所以在我看来数据在那时已经损坏了。又错了。我怀疑在 HTTP 阶段内,有两个字符转换,首先从 Unicode 到它认为您拥有的任何编码,然后第二次编码到 %signs,而我的数据在第一步被错误编码。
5:我本以为 JMeter 会说些什么或警告,但从我的阅读来看,显然它在这方面没有帮助。您可以进行日志记录或其他操作。
还有“?” 是 Java 默认报告问题的方式,这是从 Java 1.4x 时间范围开始的。在我的 Java 代码中,我更喜欢将编码错误设置为异常报告,但同样,不是默认值,也不是 JMeter 所做的。
所以我吸取了教训。
Unicode 至少开始时表现良好的暗示是问号的数量等于日语字符的数量,而不是问号数量的 2 或 3 倍。如果“???”的长度 匹配您的日语(或中文)字符串,那么 Java 在整个过程中的某个时刻确实看到了实际的 Unicode 字符。然而,如果您看到 ? 的数量是输入文本的 3 倍,那么 Java 总是将它们视为字节或整数或其他任何内容,而永远不会将其视为有效的代码点。
| 归档时间: |
|
| 查看次数: |
6228 次 |
| 最近记录: |