【问题标题】:How to prevent vb.net from differentiating à to a如何防止 vb.net 将 à 区分为 a
【发布时间】:2023-03-21 10:41:01
【问题描述】:

我们知道 tolower 函数会将所有 A 变成 a

如何把所有的à变成a。

目的是我正在为数据库创建 ID,并且 ID 需要是唯一的。有时,相同的商店在一个地方写成 à,而在其他地方写成 a。这将产生重复 id 问题。

所以我需要一个函数来将所有的 à 及其所有变体变成 a。同样的方式 ě 应该变成 e。

基本上我会在我的数据库上使用 utf8_unicode 排序规则。在该排序规则下算作相同字母的字母应映射到此函数下的相同字符。

我需要确保所有其他东亚角色不受影响。

我该怎么做?

【问题讨论】:

标签: vb.net encoding utf-8 collation


【解决方案1】:
static string RemoveDiacritics(string stIn) 
        { 
            string stFormD = stIn.Normalize(NormalizationForm.FormD); 
            StringBuilder sb = new StringBuilder(); 
            for (int ich = 0; ich < stFormD.Length; ich++) 
            { 
                UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]); 
                if (uc != UnicodeCategory.NonSpacingMark) 
                { 
                    sb.Append(stFormD[ich]); 
                } 
            } 
            return (sb.ToString().Normalize(NormalizationForm.FormC));
        }

【讨论】:

猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多