相关疑难解决方法(0)

如何在HTTP中编码Content-Disposition头文件名参数?

想要强制下载资源而不是直接在Web浏览器中呈现资源的Web应用程序Content-Disposition在表单的HTTP响应中发出标头:

Content-Disposition: attachment; filename=FILENAME

filename参数可用于建议浏览器下载资源的文件的名称.但是,RFC 2183(Content-Disposition)在2.3节(文件名参数)中指出文件名只能使用US-ASCII字符:

当前[RFC 2045]语法将参数值(以及因此内容处理文件名)限制为US-ASCII.我们认识到允许在文件名中使用任意字符集的巨大愿望,但是定义必要的机制超出了本文档的范围.

然而,有经验证据表明,当今大多数流行的Web浏览器似乎都允许非US-ASCII字符(缺乏标准)对编码方案和文件名的字符集规范不同意.问题是,如果文件名"naïvefile"(没有引号,第三个字母是U + 00EF)需要编码到Content-Disposition标题中,那么流行浏览器采用的各种方案和编码是什么?

出于这个问题的目的,流行的浏览器是:

  • 火狐
  • IE浏览器
  • 苹果浏览器
  • 谷歌浏览器
  • 歌剧

browser specifications http-headers

509
推荐指数
15
解决办法
33万
查看次数

将符号,重音符号转换为英文字母

问题是,如你所知,Unicode图表中有数千个字符,我想将所有相似的字符转换为英文字母中的字母.

例如,这里有一些转换:

?->H
?->V
?->Y
?->O
?->C
t?? ?????y --> the Family
...
Run Code Online (Sandbox Code Playgroud)

我看到有超过20个版本的字母A/a.而且我不知道如何对它们进行分类.它们看起来像大海捞针.

完整的unicode字符列表位于http://www.ssec.wisc.edu/~tomw/java/unicode.htmlhttp://unicode.org/charts/charindex.html.只需向下滚动即可看到字母的变化.

如何用Java转换所有这些?请帮我 :(

java unicode diacritics special-characters

126
推荐指数
8
解决办法
12万
查看次数

C#中的URL Slugify算法?

所以我搜索并浏览了SO上的slug标签,发现了两个引人注目的解决方案:

这只是部分解决问题的方法.我可以自己手动编写代码,但我很惊讶还没有解决方案.

那么,在C#和/或.NET中是否有一个slugify alrogithm实现正确解决了拉丁字符,unicode和其他各种语言问题?

c# slug

74
推荐指数
4
解决办法
3万
查看次数

如何防止像Zalgo文本这样的变音符号

是吧?

上面描绘的角色是几个月前由计算机安全专家MikkoHyppönen发推的,他以计算机病毒和TED谈论计算机安全而闻名.关于SO,我只会发布它的图像,但你明白了.这显然不是你想要在你的网站上传播并吓跑游客的东西.

经过进一步检查,该字符似乎是一个泰语字母和超过87个变音符号的字母(是否有限制?!).这让我想到了安全性,本地化以及如何处理这种输入.我的搜索引导我在Stack上提出这个问题,然后是迈克尔卡普兰关于剥离变音符号的博客文章.在其中,他演示了如何将字符串分解为其"基本"字符(为简洁起见,此处简化):

StringBuilder sb = new StringBuilder();
foreach (char c in "façade".Normalize(NormalizationForm.FormD))
{
    if (char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
        sb.Append(c);
}
Response.Write(sb.ToString()); // facade 
Run Code Online (Sandbox Code Playgroud)

我可以看到这在某些情况下是如何有用的,但就用户输入而言,它将剥离所有变音符号.正如卡普兰指出的那样,删除一些语言中的变音符号可以完全改变单词的含义.这引出了一个问题:如何在用户输入/输出中允许一些变音符号,但排除其他极端情况,例如MikkoHyppönen的超级字符?

c# unicode user-input diacritics zalgo

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

执行多个字符串替换的更快方法

我需要做以下事情:

    static string[] pats = { "å", "Å", "æ", "Æ", "ä", "Ä", "ö", "Ö", "ø", "Ø" ,"è", "È", "à", "À", "ì", "Ì", "õ", "Õ", "ï", "Ï" };
    static string[] repl = { "a", "A", "a", "A", "a", "A", "o", "O", "o", "O", "e", "E", "a", "A", "i", "I", "o", "O", "i", "I" };
    static int i = pats.Length;
    int j;

     // function for the replacement(s)
     public string DoRepl(string Inp) {
      string tmp = Inp;
        for( j = 0; j < …
Run Code Online (Sandbox Code Playgroud)

c# regex

23
推荐指数
3
解决办法
6616
查看次数

如何将8位字符转换为7位字符?(即Ü到U)

我正在寻找伪代码或示例代码,以将更高位的ascii字符(例如,将其扩展为ascii 154)转换为U(ascii 85).

我最初的猜测是,由于只有大约25个ascii字符与7bit ascii字符类似,因此必须使用翻译数组.

如果您能想到其他任何事情,请告诉我.

ascii

21
推荐指数
6
解决办法
2万
查看次数

为什么在删除Accents/Diacritics时不会将D扁平化为D.

我正在使用此方法从我的字符串中删除重音:

static string RemoveAccents(string input)
{
    string normalized = input.Normalize(NormalizationForm.FormKD);
    StringBuilder builder = new StringBuilder();
    foreach (char c in normalized)
    {
        if (char.GetUnicodeCategory(c) !=
        UnicodeCategory.NonSpacingMark)
        {
            builder.Append(c);
        }
    }
    return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)

但是这个方法使đ为đ,并且不会将其更改为d,即使d是其基本字符.您可以使用此输入字符串"æøåáâăäĺćçčéęěěîďđńňóôőöřůúűüýţ"进行尝试

字母đ中有什么特别之处?

.net c# string diacritics

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

.NET可以将Unicode转换为ASCII以删除"智能引号"等吗?

我们的一些用户使用无法处理Unicode的电子邮件客户端,即使在邮件头中正确设置了编码等.

我想"规范化"他们收到的内容.我们遇到的最大问题是用户将来自Microsoft Word的内容复制到我们的Web应用程序中,然后通过电子邮件转发该内容 - 包括分数,智能引号以及Word为您帮助插入的所有其他扩展Unicode字符.

我猜这里没有明确的解决方案,但在我坐下来开始编写伟大的查找表之前,是否有一些内置的方法可以让我开始?

基本上涉及三个阶段.

首先,从其他正常字母中删除重音 - 解决方案就在这里

This paragraph contains “smart quotes” and áccénts and ½ of the problem is fractions
Run Code Online (Sandbox Code Playgroud)

This paragraph contains “smart quotes” and accents and ½ of the problem is fractions
Run Code Online (Sandbox Code Playgroud)

其次,用它们的ASCII等效替换单个Unicode字符,给出:

This paragraph contains "smart quotes" and accents and ½ of the problem is fractions
Run Code Online (Sandbox Code Playgroud)

在我实现自己的解决方案之前,这是我希望有解决方案的部分.最后,使用合适的ASCII序列替换特定字符 - ½到1/2,依此类推 - 我很确定任何类型的Unicode魔法本身都不支持,但是有人可能已经写了一个合适的查找表我可以再利用.

有任何想法吗?

.net unicode ascii normalize codepages

17
推荐指数
2
解决办法
7101
查看次数

如何删除C++ std :: string中的重音和波形符号

我在C++中有一个字符串的问题,它有几个西班牙语单词.这意味着我有很多带有重音符号和波浪号的单词.我想替换他们没有重音的同行.示例:我想替换这个词:哈比亚的"había".我尝试直接替换它,但使用字符串类的替换方法,但我无法让它工作.

我正在使用此代码:

for (it= dictionary.begin(); it != dictionary.end(); it++)
{
    strMine=(it->first);
    found=toReplace.find_first_of(strMine);
    while (found!=std::string::npos)
    {
        strAux=(it->second);
        toReplace.erase(found,strMine.length());
        toReplace.insert(found,strAux);
        found=toReplace.find_first_of(strMine,found+1);
    }
}
Run Code Online (Sandbox Code Playgroud)

dictionary这样的地图在哪里(有更多条目):

dictionary.insert ( std::pair<std::string,std::string>("á","a") );
dictionary.insert ( std::pair<std::string,std::string>("é","e") );
dictionary.insert ( std::pair<std::string,std::string>("í","i") );
dictionary.insert ( std::pair<std::string,std::string>("ó","o") );
dictionary.insert ( std::pair<std::string,std::string>("ú","u") );
dictionary.insert ( std::pair<std::string,std::string>("ñ","n") );
Run Code Online (Sandbox Code Playgroud)

toReplace字符串是:

std::string toReplace="á-é-í-ó-ú-ñ-á-é-í-ó-ú-ñ";
Run Code Online (Sandbox Code Playgroud)

我显然必须遗漏一些东西.我无法弄清楚.有没有我可以使用的图书馆?

谢谢,

c++ string text str-replace

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

如何删除字符串上的重音?

可能重复:
如何从.NET中的字符串中删除变音符号(重音符号)?

我有以下字符串

áéíóú
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为

aeiou
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现它?(我不需要比较,我需要新的字符串来保存)


不重复如何从.NET中的字符串中删除变音符号(重音符号)?.那里接受的答案没有解释任何事情,这就是为什么我"重新开启"它.

.net c#

15
推荐指数
2
解决办法
4万
查看次数