我遇到一个奇怪的问题,如果我通过将字符串粘贴到我的winform应用程序中的搜索文本框中来搜索产品名称(例如:ABC 123 XYZ),我的服务将不会返回任何结果。
用户遵循此模式并面临要搜索的问题: 在outlook中包含产品名称的表 - 复制到excel中 - 然后将excel中该表中的字符串复制到我的应用程序的搜索文本框中进行搜索。
当我手动输入(ABC 123 XYZ)到我的搜索框时,相同的字符串,工作正常,服务返回结果。因此,当将值从excel复制到我的应用程序的文本框时,我怀疑有一些编码问题。
我做了一些关于编码的阅读并发现了这个工具。 http://www.codeproject.com/Articles/17201/Detect-Encoding-for-In-and-Outgoing-Text
当我从excel复制文本时 - 它显示'西欧(Windows),iso-8859-1。
当我输入时 - 它显示US-ASCII。所以,我总结说,最好将我的文本转换为US-ASCII。
直接输入文本框时的文字编码
从excel单元格复制时的文本编码
我按照下面的代码将其转换为US-ASCII并找到它。问题似乎是在字母之间的“空格”中,因此在下面的代码中,EncoderReplacementFallback是“”。
string inputString = textBox1.Text;
Encoding encoder = ASCIIEncoding.GetEncoding("us-ascii",
new EncoderReplacementFallback(" "),
new DecoderExceptionFallback());
byte[] bAsciiString = encoder.GetBytes(inputString);
string cleanString = new ASCIIEncoding().GetString(bAsciiString);
此代码可以使用它。
我不确定这种方法是否适合将任何粘贴或输入的字符串转换为搜索框。这适用于所有情况,无论对粘贴文本进行何种编码或何时用手键入?
感谢。