问题列表 - 第21865页

是否可以可靠地将用户文件自动解码为Unicode?[C#]

我有一个Web应用程序,允许用户上传他们的内容进行处理.处理引擎需要UTF8(我正在从多个用户的文件中编写XML),所以我需要确保能够正确解码上传的文件.

因为如果我的任何用户知道他们的文件甚至编码我会感到惊讶,我很少希望他们能够正确指定要使用的编码(解码器).因此,我的应用程序在解码前留下了检测任务.

这似乎是一个普遍的问题,我很惊讶没有找到解决方案的框架功能或一般配方.是不是我没有搜索有意义的搜索词?

我已经实现了BOM感知检测(http://en.wikipedia.org/wiki/Byte_order_mark),但我不确定文件上传的频率是多少,无需BOM表示编码,这对于大多数非UTF文件.

我的问题归结为:

  1. BOM识别检测对于绝大多数文件是否足够?
  2. 在BOM检测失败的情况下,是否可以尝试不同的解码器并确定它们是否"有效"?(我的尝试表明答案是"不".)
  3. 在什么情况下,"有效"文件会因C#编码器/解码器框架而失败?
  4. 是否有一个存储库,其中包含大量具有各种编码的文件用于测试?
  5. 虽然我特别询问C#/ .NET,但我想知道Java,Python和其他语言的答案,以便下次我必须这样做.

到目前为止,我发现:

  • 带有Ctrl-S字符的"有效"UTF-16文件导致编码为UTF-8抛出异常(非法字符?) (这是一个XML编码异常.)
  • 使用UTF-8解码有效的UTF-16文件会成功,但会为文本提供空字符.咦?
  • 目前,我只期望UTF-8,UTF-16和可能的ISO-8859-1文件,但我希望该解决方案尽可能可扩展.
  • 我现有的一组输入文件不够宽泛,无法发现实时文件会出现的所有问题.
  • 虽然我试图解码的文件是"文本",但我认为它们通常是用文件中的垃圾字符创建的方法.因此"有效"文件可能不是"纯粹的".哦,快乐.

谢谢.

c# string multilingual utf-8 utf-16

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

是否可以替换Android中的默认"强制关闭"对话框?

我希望我的Android应用程序的用户可以选择通过电子邮件发送任何崩溃我的应用程序的未捕获异常的堆栈跟踪.最初我以为我会在try/catch块中将每个入口点包装到我的应用程序中,但是即使在我的小应用程序中也存在太多这样的内容,因为这是合理的.

所以我真正想要的是一种方法来指定一些方法作为任何未捕获的异常的默认处理程序.有什么建议?

java android exception

7
推荐指数
2
解决办法
2494
查看次数

如何在代码隐藏中动态添加转换器

我通过IDictionary将Datagrid绑定到动态数据:http://www.scottlogic.co.uk/blog/colin/2009/04/binding-a-silverlight-datagrid-to-dynamic-data-via-idictionary/comment -page-1 /#评论- 8681

但我不想在xaml中定义任何列(下面是如何在Colin Eberhardt的帖子中完成它

<data:DataGrid.Columns>
    <data:DataGridTextColumn Header="Forename" Binding="{Binding Converter={StaticResource RowIndexConverter}, ConverterParameter=Forename}" />
</data:DataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)

所以我编写了以下代码来尝试在后面的代码中执行相同的操作,但代码不会调用RowIndexConverter.必须遗漏一些东西.

码:

// add columns

DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Header = "Forename";

Binding bind = new Binding("Forename");
bind.Converter = new RowIndexConverter() ;
bind.ConverterParameter = "Forename";            

textColumn.Binding = bind;
_dataGrid.Columns.Add(textColumn);
Run Code Online (Sandbox Code Playgroud)

其余代码(此处为上下文):

// generate some dummy data
Random rand = new Random();
for (int i = 0; i < 200; i++)
{
    Row row = new Row();
    row["Forename"] = s_names[rand.Next(s_names.Length)];
    row["Surname"] = s_surnames[rand.Next(s_surnames.Length)]; …
Run Code Online (Sandbox Code Playgroud)

.net silverlight wpf converter code-behind

9
推荐指数
1
解决办法
2万
查看次数

JavaScript闭包和变量范围

我在JS闭包时遇到问题:

// arg: an array of strings. each string is a mentioned user.
// fills in the list of mentioned users. Click on a mentioned user's name causes the page to load that user's info.
function fillInMentioned(mentions) {
    var mentionList = document.getElementById("mention-list");
    mentionList.innerHTML = "";
    for (var i = 0; i < mentions.length; i++) {
        var newAnchor = document.createElement("a");

        // cause the page to load info for this screen name
        newAnchor.onclick = function () { loadUsernameInfo(mentions[i]) };

        // give this …
Run Code Online (Sandbox Code Playgroud)

javascript events dom closures

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

Python和SQL服务器

从python访问sql server的最佳方法是DB-API吗?也有人可以使用DB-API提供这样的代码如何从python和执行查询连接到SQL服务器?

python sql sql-server

26
推荐指数
2
解决办法
3万
查看次数

如何浏览TFS变更集?

我想浏览TFS更改集.

我不想通过指定变更集中包含的文件来搜索变更集.我不想指定我认为创建变更集的用户.

我只想键入变更集编号并查看该变更集.或者查看范围,然后浏览它们.

没有指定文件,没有指定用户.TFS 2008似乎不想让我这样做.

我肯定错过了什么.

你怎么做到这一点?

tfs

65
推荐指数
3
解决办法
5万
查看次数

Python:为什么右移>>向下舍入,应该在哪里使用?

我从来没有使用过>><<操作符,不是因为我从来不需要它们,而是因为我不知道我是否可以使用它们,或者我应该使用它们.

100 >> 3输出12而不是12.5.为什么是这样.也许学习哪里最好使用右移会隐含地回答,但我很好奇.

python operators

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

timespec是否未在Windows中定义?

这个答案很难找到,这对我来说似乎很奇怪.我已经包含了time.h和ctime,但是vc9仍在抱怨未定义的类型'timespec'.我在这里搜索过,MSDN和网络(即使有确切的编译错误),但我找不到答案......也许它只是在噪音中丢失了.

这是确切的错误:

error C2027: use of undefined type 'timespec'
Run Code Online (Sandbox Code Playgroud)

谢谢

windows time timespec

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

在Rabin-Karp字符串搜索算法中是否使用了滚动哈希函数的任何工作实现?

我正在寻找使用滚动哈希函数,所以我可以采用一个非常大的字符串的n-gram哈希值.

例如:

"stackoverflow",分解成5克将是:

"stack","tacko","ackov","ckove","kover","overf","verfl","erflo","rflow"

这对于滚动哈希函数是理想的,因为在我计算第一个n-gram哈希之后,以下的哈希计算相对便宜,因为我只需要删除第一个哈希的第一个字母并添加第二个哈希的新的最后一个字母.

我知道通常这个哈希函数生成为:

H = c 1 a k - 1 + c 2 a k - 2 + c 3 a k - 3 + ... + c k a 0其中a是常数,c1,...,ck是输入字符.

如果您在Rabin-Karp字符串搜索算法上遵循此链接,它会声明"a"通常是一些大素数.

我希望我的哈希值存储在32位整数中,那么素数的大小应该是"a",这样我就不会溢出整数?

在我可以使用的某个地方是否存在此哈希函数的现有实现?


这是我创建的一个实现:

public class hash2
{

    public int prime = 101;

    public int hash(String text)
    {
        int hash = 0;

        for(int i = 0; i < text.length(); i++)
        {
            char c = text.charAt(i);
            hash += c * (int) (Math.pow(prime, text.length() …
Run Code Online (Sandbox Code Playgroud)

c# java algorithm hash rabin-karp

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

push_back到向量

我有一个奇怪的问题.我有一个矢量,我想把对象推到这样:

vector<DEMData>* dems = new vector<DEMData>();
DEMData* demData = new DEMData();
// Build DEMDATA

dems->push_back(*demData);
Run Code Online (Sandbox Code Playgroud)

向量中将有几百个DEMData对象.问题是当这段代码完成后,所有项目都等于最后一项"推回"到矢量?

为什么在向量中覆盖其他对象?

编辑:

DemData类很简单,只是一个带有setter和getter的数据结构:

    class DEMData
{
private:
    int bitFldPos;
    int bytFldPos;
    const char* byteOrder;
    const char* desS;
    const char* engUnit;
    const char* oTag;
    const char* valType;
    int index;
public:
    void SetIndex(int index);
    int GetIndex() const;
    void SetValType(const char* valType);
    const char* GetValType() const;
    void SetOTag(const char* oTag);
    const char* GetOTag() const;
    void SetEngUnit(const char* engUnit);
    const char* GetEngUnit() const;
    void SetDesS(const char* desS);
    const …
Run Code Online (Sandbox Code Playgroud)

c++ stdvector

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