相关疑难解决方法(0)

从字符串中删除所有非ASCII字符

我有一个C#例程,它从CSV文件导入数据,将其与数据库匹配,然后将其重写为文件.源文件似乎有一些非ASCII字符,这些字符会污染处理程序.

我已经有一个静态方法,我运行每个输入字段,但它执行基本检查,如删除逗号和引号.有谁知道如何添加删除非ASCII字符的功能?

c# ascii

47
推荐指数
5
解决办法
6万
查看次数

C#:循环编码

我正在阅读各种格式和语言的文件,我目前正在使用一个小编码库来尝试检测正确的编码(http://www.codeproject.com/KB/recipes/DetectEncoding.aspx).

这很不错,但偶尔也会错过.(多语言文件)

我的大多数潜在用户对编码的理解很少(我希望最好的是"它与字符有关")并且不太可能在列表中选择正确的编码,所以我想让他们循环通过不同的编码,直到找到正确的编码只需点击一个按钮.

显示问题?点击这里尝试不同的编码!(那就是这个概念)

实现类似的东西最好的方法是什么?


编辑:看起来我没有表达得足够清楚.通过"循环编码",我不是指"如何循环编码?"

我的意思是"如何让用户按顺序尝试不同的编码而不重新加载文件?"

这个想法更像是这样的:假设文件加载了错误的编码.显示一些奇怪的字符.用户将单击"下一编码"或"先前编码"按钮,并且将以不同的编码转换该字符串.用户只需要一直点击,直到找到正确的编码.(无论哪种编码看起来对用户有用都会很好).只要用户可以点击"下一步",他就有合理的机会解决他的问题.

我到目前为止所发现的涉及使用当前编码将字符串转换为字节,然后将字节转换为下一个编码,将这些字节转换为字符,然后将字符串转换为字符串......可行,但我想知道是否存在这是一种更简单的方法.

例如,如果有一个方法可以读取字符串并使用不同的编码返回它,例如"render(string,encoding)".


非常感谢您的回答!

c# utf-8 character-encoding

6
推荐指数
1
解决办法
4136
查看次数

如何在.NET中猜测没有BOM的文件的编码?

我在.NET中使用StreamReader类,如下所示:

using( StreamReader reader = new StreamReader( "c:\somefile.html", true ) {
    string filetext = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

当文件有BOM时,这可以正常工作.我遇到了没有BOM的文件的麻烦..基本上我得到了胡言乱语.当我指定Encoding.Unicode它工作正常,例如:

using( StreamReader reader = new StreamReader( "c:\somefile.html", Encoding.Unicode, false ) {
    string filetext = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

所以,我需要将文件内容转换为字符串.那么人们通常如何处理这个呢?我知道没有解决方案可以100%的时间工作,但我想提高我的赔率..显然有那些试图猜测的软件(例如,记事本,浏览器等)..NET框架中是否有一种方法可以猜测我?有没有人有他们想分享的代码?

更多背景:这个问题和我的问题差不多,但我在.NET领域.这个问题让我进入了一个列出各种编码检测库的博客,但没有一个在.NET中

.net c# unicode encoding character-encoding

6
推荐指数
1
解决办法
7939
查看次数

字符串过滤器:检测非ASCII标志

我正在创建一个将输入字符串发送到移动设备的应用程序.某些设备在编码特殊字符时遇到问题,因此我想创建一个不允许PC上的用户输入特殊字符的过滤器.

该应用程序是用C#(.NET 3.5)编写的,我想将一个方法附加到按键事件.伪代码如下:

private void checkTextBoxContent(TextBox txtEntry)
{
    if(txtEntry.Text contains non-ASCII sign)
    {
        show messageBox;
        remove the last entered character;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道是否有任何检测ASCII /非ASCII符号的现有方法,以便可以在条件中使用

txtEntry.Text包含非ASCII符号?

谢谢!

.net string encoding

4
推荐指数
1
解决办法
2967
查看次数

使用存储在数据库中的字符串编码问题

我有一个编码问题.我的MongoDB中有错误编码的文本.我的数据库中文本的源文件以ISO-8859-1编码.现在,在我的数据库中查看它时,一些字符被打破(变成' ').

目前,在从db检索文本时,我尝试了以下代码.

var t = Collection.FindOne(Query.EQ("id", "2014121500892"));
string message = t["b203"].AsString;
Console.WriteLine(ChangeEncoding(message));
Run Code Online (Sandbox Code Playgroud)

第一次尝试:

static string ChangeEncoding(string message)
{

    System.Text.Encoding srcEnc = System.Text.Encoding.GetEncoding("ISO-8859-1");
    System.Text.Encoding destEnc = System.Text.Encoding.GetEncoding("UTF-8");
    byte[] bData = srcEnc.GetBytes(message);
    byte[] bResult = System.Text.Encoding.Convert(srcEnc, destEnc, bData);
    return destEnc.GetString(bResult);
}
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

static string ChangeEncoding(string message)
{
    File.WriteAllText("text.txt", message, Encoding.GetEncoding("ISO-8859-1"));
    return File.ReadAllText("text.txt");
}
Run Code Online (Sandbox Code Playgroud)

db中的示例文本:

Box aus Pappef rA8-Lernk rtchen

期望的结果:

我希望能够在控制台中将其打印为:

Box ausPappefürA8-Lernkärtchen

c# unicode encoding mongodb-.net-driver

1
推荐指数
1
解决办法
1385
查看次数