gpt4 book ai didi

java - C#/Java 在 Xamarin Android 中验证 Unicode 字符

转载 作者:行者123 更新时间:2023-12-02 13:28:53 24 4
gpt4 key购买 nike

我正在将 XML 发送到第三方 Web 服务。 XML 中的某些字符会导致 Web 服务抛出异常,示例如下:

System.ServiceModel.FaultException was unhandled HResult=-2146233087
Message=System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Text.EncoderFallbackException: Unable to translate Unicode character \u0193 at index 281 to specified code page.

在某些情况下不会抛出异常:

  1. 如果字符位于 Unicode 字符表的前 0-255 个字符内(除了 128-160 范围内的某些字符外),或者
  2. 对于 255 范围以上的某些特定 Unicode 字符,例如“f”(402)。我注意到其中大多数在 page 上被标记为“在 WGL4 中” 。然而,一些标记为“in WGL4”的确实会导致异常。

当用户在文本框中键入内容,或将 Word 文档或电子邮件粘贴到文本框中(然后文本将发送到网络服务)时,我们会遇到此问题。

我想限制可以在文本框中输入的字符。首先,我进行了这个基本测试:

if ((chr > 255) || (!XmlConvert.IsXmlChar(chr)))
{
// Restrict character
}

但是,这不允许使用 255 以上的某些有效字符。如何添加条件来允许这些字符,而不需要硬编码一长串可能值,例如有我可以使用的现有方法吗?

最佳答案

看起来服务器正在将文本编码为字符集 Windows-1252 ,Windows 服务器上 C# 代码的一个非常常见的代码页。

要查看文本是否仅包含可编码为 Windows-1252 的字符,请使用以下 Java 代码:

String text = ...;
CharsetEncoder encoder = Charset.forName("windows-1252").newEncoder();
if (! encoder.canEncode(text)) {
// Text is not supported
}

关于java - C#/Java 在 Xamarin Android 中验证 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43280124/

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