我必须用Java处理这种情况:
我从声明了encoding = utf-8的客户端收到XML格式的请求。不幸的是,它可能不包含utf-8字符,并且有必要从我这一边的xml中删除这些字符(旧式)。
让我们考虑一个示例,其中该无效XML包含£(磅)。
1)我将xml作为带有£的java字符串(我现在无法访问接口,但我很可能将xml作为java的字符串)。我可以使用replaceAll(£,“”)摆脱这个字符吗?有潜在的问题吗?
2)我得到xml作为字节数组-在这种情况下如何安全地处理此操作?
1)我将xml作为带有£的java字符串(我现在无法访问接口,但我很可能将xml作为java的字符串)。我可以使用replaceAll(£,“”)摆脱这个字符吗?
我假设您的意思是说您要摆脱非ASCII字符,因为您正在谈论“传统”方面。您可以使用以下正则表达式消除可打印ASCII范围之外的任何内容:
string = string.replaceAll("[^\\x20-\\x7e]", "");
2)我得到xml作为字节数组-在这种情况下如何安全地处理此操作?
您需要将包裹在byte[]
中ByteArrayInputStream
,以便可以使用UTF-8编码的字符流(通过InputStreamReader其中指定编码)BufferedReader
来读取它们,然后使用来逐行读取。
例如
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes), "UTF-8"));
for (String line; (line = reader.readLine()) != null;) {
line = line.replaceAll("[^\\x20-\\x7e]", "");
// ...
}
// ...
问题内容: 我有大量的文件和解析器。我要做的是剥离所有非utf-8符号并将数据放入mongodb中。目前,我有这样的代码。 不知何故我仍然出现错误 我不明白 有一些简单的方法吗? UPD :似乎Python和Mongo对Utf-8有效字符串的定义不同意。 问题答案: 请尝试在下面的代码行而不是最后两行。希望能帮助到你:
问题内容: 我在字符串列表的json.Marshal上得到这个: 原因很明显,但是如何在Go中删除/替换这样的字符串?我一直在阅读docst 和包,似乎没有明显/快速的方法。 例如,在Python中,您可以使用一些方法删除无效字符,将其替换为指定字符或严格设置,这会导致无效字符的异常。如何在Go中做等效的事情? 更新:我的意思是得到异常的原因(紧急?)-json.Marshal期望有效的UTF-8
问题内容: 因此,我有一个字符串数组,所有字符串都使用系统默认的 ANSI 编码,并从SQL数据库中提取。因此,存在256个不同的可能字符字节值(单字节编码)。 有没有一种方法可以使我工作并显示这些字符,而不必在我的所有字符串上使用并最终得到类似的东西? 还是这是JSON的标准? 问题答案: 有没有一种方法可以使json_encode()工作并显示这些字符,而不必在所有字符串上都使用utf8_en
描述 (Description) 方法encode()返回字符串的编码版本。 默认编码是当前的默认字符串编码。 可以给出错误以设置不同的错误处理方案。 语法 (Syntax) str.encode(encoding='UTF-8',errors='strict') 参数 (Parameters) encoding - 这是要使用的编码。 有关所有编码方案的列表,请访问: Standard Enc
描述 (Description) 方法decode()使用为编码注册的编解码器对字符串进行解码。 它默认为默认字符串编码。 语法 (Syntax) Str.decode(encoding='UTF-8',errors='strict') 参数 (Parameters) encoding - 这是要使用的编码。 有关所有编码方案的列表,请访问: 标准编码。 errors - 可以设置不同的错误处理
我正在处理一个使用UTF-8编码了两次的遗留文件。例如,编码点()本应编码为,但改为编码为(是的UTF-8编码,是的UTF-8编码)。 假设数据在CP-1252中编码,则执行第二次编码。 为了回到UTF-8编码,我使用了以下(似乎错误)命令 我的问题是iconv似乎无法转换回一些字符。更准确地说,iconv无法转换UTF-8表示形式包含映射到CP-1252中控制字符的字符。一个例子是代码点ρ():