我有一个 AS/400 回复文本,它是多语言字符串,如下所示,长度为 28872 个字符。
2012021920120219000000000300000D000000010146208D22ﻑﻳﺭﺎﺻﻣ
我必须将文本拆分为每个 block 240 个字符,但由于中间有阿拉伯字符,我的逻辑无法提取确切的 240 个字符长度。
我的问题是如何在不丢失原始格式的情况下拆分多语言文本?
最佳答案
您应该这样编写代码,以便根据文本编码准确提取 240 个字符。根据编码的不同,一个字符可以占用多个字节。常见的编码是 UTF-8
。查看 Wikipedia,了解 UTF-8 的工作原理。这将使您能够编写正确的工作代码。 UTF-8 Description
因此,您应该找出当前字符占用了多少字节。
当然,在开始之前,请确保您知道输入文本的编码。
知道Java使用UTF-16来存储字符。因此,这意味着一个阿拉伯字符可以由多个 char
组成,因为代码点超过 2^16。为了正确处理这个问题,我会将整个字符串转换为字节缓冲区:
String longStringToSplit = ...;
byte[] stringUTF8 = longStringToSplit.getBytes("UTF-8");
// now, split it manually and correct, using the utf-8 specifications you
// can find in the link I gave you to wiki.
关于c# - 分割多语言字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774689/