2012-07-06 27 views
2

我用这个代码:正常化所有UTF8字符到它是最标准的格式

Public Function RemoveDiacritics(ByVal s As String) As String 
    Dim normalizedString As String 
    Dim stringBuilder As New StringBuilder 
    normalizedString = s.Normalize(NormalizationForm.FormKD) 
    Dim i As Integer 
    Dim c As Char 
    For i = 0 To normalizedString.Length - 1 
     c = normalizedString(i) 
     If CharUnicodeInfo.GetUnicodeCategory(c) <> UnicodeCategory.NonSpacingMark Then 
      stringBuilder.Append(c) 
     End If 
    Next 
    Return stringBuilder.ToString() 
End Function 

这真棒功能工作的大部分时间(我忘了,我把它复制并修改了它一点点,如果你写请让我知道,所以我可以信贷)。

出的50万个字的下面还流过此过滤器:

٥ (4) <-------> 5 (20321) 
​​​ (4) <-------> ​ (97) 
つ (4) <-------> ツ (17) 
≈ (1) <-------> ​≈ (1) 
​◦☃β (1) <-------> ◦☃β (2) 
​☀ (1) <-------> ☀ (14) 
​​​☆ (1) <-------> ☆ (32) 
​​​​​​★☆ (1) <-------> ★☆ (6) 
​​​​☺ (2) <-------> ☺ (266) 
​☺ (5) <-------> ☺ (266) 
​♏ (3) <-------> ♏ (19) 
♚​ (2) <-------> ♚ (33) 
♚​​​​​ (1) <-------> ♚ (33) 
​​​​♧ (1) <-------> ♧ (2) 
​✽ (1) <-------> ✽ (26) 
١٥ (1) <-------> 15 (8862) 
☺​ (1) <-------> ☺ (266) 
➎ (1) <-------> 5 (20321) 
٥٠ (1) <-------> 50 (4155) 
๙ (2) <-------> 9 (13777) 
​© (1) <-------> © (173) 
​ (4) <------->  (50) 
​​© (1) <-------> © (173) 
⌣​ (1) <-------> ⌣ (120) 
oe (7) <-------> œ (7) 
​​β (1) <-------> β (19) 
​​☺ (2) <-------> ☺ (266) 
​з (1) <-------> з (16) 
​​ (17) <-------> ​ (97) 
丸ノ内店 (2) <-------> 丸の内店 (3) 
❷ (1) <-------> 2 (40100) 
ˆ⌣ˆ​​​​ (3) <-------> ˆ⌣ˆ (45) 
βενιζελου (1) <-------> βενίζελου (45) 
​ƪ (5) <-------> ƪ (84) 
​​​​ (3) <-------> ​ (97) 
❹❻ (1) <-------> 46 (2856) 
​:þ (1) <-------> :þ (3) 
ラーメン (19) <-------> らーめん (27) 
​​​​​ (1) <-------> ​ (97) 
٩ (3) <-------> 9 (13777) 
۶ (3) <-------> 6 (16464) 
​♥ (4) <-------> ♥ (18) 
​’ (1) <-------> ’ (146344) 
•ˆ⌣ˆ• (7) <-------> •ˆ⌣ˆ​​​​• (7) 
つ (4) <-------> っ (6) 
​​​> (1) <-------> > (160) 
​​♌ (2) <-------> ♌ (8) 
登美ヶ丘店 (1) <-------> 登美ケ丘店 (1) 
​ (2) <------->  (3) 
​” (5) <-------> ” (4389) 
⌣»··✽​ (1) <-------> ⌣»··✽ (2) 
​​​​​​​ (1) <-------> ​ (97) 
トラへラント (1) <-------> トラヘラント (3) 
☆​ (1) <-------> ☆ (32) 
ԅ҈ (1) <-------> ԅ (3) 
√ (1) <-------> ​√ (1) 
ί (4) <-------> ι (15) 
​° (2) <-------> ° (183) 
​​° (1) <-------> ° (183) 
γαλατσι (1) <-------> γαλατσί (2) 
(2) <-------> ​ (97) 
πατησιων (2) <-------> πατησίων (12) 
​​☎ (1) <-------> ☎ (18) 
ッ (1) <-------> つ (4) 
​┌п┐​ (1) <-------> ┌п┐ (2) 
​◦’⌣’◦ (1) <-------> ◦’⌣’◦ (15) 
➋ (7) <-------> 2 (40100) 
ノ (4) <-------> の (7) 
えひすヒル (1) <-------> エヒスヒル (1) 
“​​ (1) <-------> “ (5962) 
​​ƪ (3) <-------> ƪ (84) 
​ツ (1) <-------> つ (4) 
​> (1) <-------> > (160) 
​​ː (1) <-------> ​ː (1) 
​ː (1) <-------> ː (2) 
@​​ (1) <-------> @ (11656) 
‹ (1) <-------> ​‹ (1) 
〇 (1) <-------> 0 (431) 
я۝ (1) <-------> я (74) 
新百合ケ丘店 (2) <-------> 新百合ヶ丘店 (4) 
ψυχικο (1) <-------> ψυχίκο (1) 
•​”• (2) <-------> •”• (4) 
​◦ˆ▽ˆ◦ (1) <-------> ◦ˆ▽ˆ◦ (1) 
┏ (1) <-------> ​┏ (1) 
​​​ʀ (2) <-------> ʀ (20) 
​​​​​​ (1) <-------> ​ (97) 
​امين (1) <-------> امين (2) 
١٥٧٤ (1) <-------> 1574 (16) 
➌ (1) <-------> 3 (27369) 
ʃ​ (1) <-------> ʃ (70) 
๑ (2) <-------> 1 (57313) 
εγνατια (2) <-------> εγνατία (2) 
​☎ (1) <-------> ☎ (18) 
ƾ (1) <-------> ts (63) 
‬ (1) <-------> ​ (97) 
ƍ (2) <-------> zw (2) 
κειριαδων (1) <-------> κείρίαδων (1) 
ακταιον (1) <-------> ακταίον (2) 
αστερια (1) <-------> αστερία (4) 
αστυνομικο (1) <-------> αστυνομίκο (3) 
αττικον (1) <-------> αττίκον (1) 
αφοι (1) <-------> αφοί (6) 
φιλιασ (1) <-------> φίλίασ (3) 
γευστικον (1) <-------> γευστίκον (2) 
δικαστικο (1) <-------> δίκαστίκο (1) 
χαιδαριου (1) <-------> χαίδαρίου (1) 
θεσνίκησ (1) <-------> θεσνικησ (1) 
εκδοσεισ (1) <-------> εκδοσείσ (1) 
σια (1) <-------> σία (3) 
εστια (1) <-------> εστία (3) 
μηχανικων (1) <-------> μηχανίκων (5) 
ηλιοσ (1) <-------> ηλίοσ (2) 
αγιου (1) <-------> αγίου (32) 
γεωργιου (2) <-------> γεωργίου (18) 
ελευθεριο (1) <-------> ελευθερίο (5) 
επιπλα (1) <-------> επίπλα (2) 
ίεροσ (1) <-------> ιεροσ (9) 
σταδιου (1) <-------> σταδίου (5) 
μεραρχιασ (1) <-------> μεραρχίασ (2) 
εκπαιδευσησ (1) <-------> εκπαίδευσησ (3) 
θεσσαλονικησ (1) <-------> θεσσαλονίκησ (13) 
λαμιασ (1) <-------> λαμίασ (4) 
κτίρίο (1) <-------> κτιριο (1) 
ατει (1) <-------> ατεί (1) 
κωνσταντινιδησ (1) <-------> κωνσταντίνίδησ (1) 
μεσογειων (1) <-------> μεσογείων (15) 
λαικη (1) <-------> λαίκη (6) 
χωριου (1) <-------> χωρίου (2) 
πλατεια (2) <-------> πλατεία (113) 
πολυτεχνειου (1) <-------> πολυτεχνείου (13) 
ναυτικοσ (1) <-------> ναυτίκοσ (3) 
ομιλοσ (1) <-------> ομίλοσ (7) 
νικοσ (1) <-------> νίκοσ (2) 
σίδ (1) <-------> σιδ (1) 
παιδικη (1) <-------> παίδίκη (11) 
παπαγίαννη (1) <-------> παπαγιαννη (1) 
παραδοσίακη (1) <-------> παραδοσιακη (1) 
τρίων (1) <-------> τριων (1) 
κομμωτηριο (1) <-------> κομμωτηρίο (8) 
σπιτακι (1) <-------> σπίτακί (4) 
σπιτι (2) <-------> σπίτί (16) 
φιλων (1) <-------> φίλων (3) 
για (1) <-------> γία (2) 
ταμείο (1) <-------> ταμειο (1) 
τζακί (1) <-------> τζακι (1) 
ηπειρου (1) <-------> ηπείρου (3) 
καραγιωργη (1) <-------> καραγίωργη (1) 
χωριατικο (1) <-------> χωρίατίκο (1) 
​السلام (1) <-------> السلام (3) 
٢ (1) <-------> 2 (40100) 
٣٠٣ (1) <-------> 303 (406) 
٥٦ (2) <-------> 56 (2242) 
٢١ (1) <-------> 21 (8533) 
٤ (1) <-------> 4 (19623) 
١٩٥ (1) <-------> 195 (308) 
٥٥١ (1) <-------> 551 (99) 
٩٠ (1) <-------> 90 (1296) 
٣ (1) <-------> 3 (27369) 
๑๑ (1) <-------> 11 (11482) 
๖ (1) <-------> 6 (16464) 
๕๐ (1) <-------> 50 (4155) 
๒๗ (1) <-------> 27 (4895) 
๘๕ (1) <-------> 85 (1249) 
๒ (2) <-------> 2 (40100) 
๓ (2) <-------> 3 (27369) 
ああ博多人情 (1) <-------> あぁ博多人情 (1) 
アタシンチ (1) <-------> アタシんち (1) 
アタン (1) <-------> あたん (1) 
ト (5) <-------> と (5) 
ヒッツエリア (1) <-------> ヒッツェリア (3) 
イオンモール奈良登美ケ丘 (1) <-------> イオンモール奈良登美ヶ丘 (2) 
イスミヤ (1) <-------> いすみや (1) 
ウインターラント (1) <-------> ウィンターラント (2) 
ウエルシア (1) <-------> ウェルシア (2) 
エヒス (1) <-------> えひす (1) 
サクラ (1) <-------> さくら (2) 
さんくす (1) <-------> サンクス (50) 
百合ヶ丘 (1) <-------> 百合ケ丘 (1) 
シェル (1) <-------> シエル (1) 
茅ケ崎店 (2) <-------> 茅ヶ崎店 (4) 
堀の内 (2) <-------> 堀ノ内 (6) 
たいわ (1) <-------> タイワ (1) 
ツタヤ (1) <-------> つたや (1) 
トラック (1) <-------> とらっく (3) 
なないろ (1) <-------> ナナイロ (1) 
新百合ヶ丘 (2) <-------> 新百合ケ丘 (3) 
ひすとろ (1) <-------> ヒストロ (6) 
富ケ谷 (1) <-------> 富ヶ谷 (3) 
御幸ヶ原町 (1) <-------> 御幸ケ原町 (2) 
ホンハトゥル (1) <-------> ホンハトウル (2) 
マルシケ (1) <-------> まるしけ (1) 
マルヤ (1) <-------> まるや (2) 
つるや (1) <-------> ツルヤ (2) 
くりえいと (2) <-------> クリエイト (7) 
ゆう (1) <-------> ユウ (1) 
ハン (1) <-------> はん (1) 
ふぅ (1) <-------> ふう (2) 
らーめん専門店 (1) <-------> ラーメン専門店 (2) 
あんと (1) <-------> アント (1) 
らいふ (1) <-------> ライフ (5) 
能ケ谷 (1) <-------> 能ヶ谷 (2) 
新百合ケ丘エルミロート店 (1) <-------> 新百合ヶ丘エルミロート店 (3) 
れすとらん (1) <-------> レストラン (15) 
中華ソハ (1) <-------> 中華そは (10) 
串かつ (2) <-------> 串カツ (3) 
九州らーめん (1) <-------> 九州ラーメン (1) 
シン (1) <-------> しん (1) 
八ケ崎 (1) <-------> 八ヶ崎 (4) 
まつもと (1) <-------> マツモト (1) 
向ケ丘遊園駅 (1) <-------> 向ヶ丘遊園駅 (1) 
月見ヶ丘 (2) <-------> 月見ケ丘 (3) 
日ノ出町 (1) <-------> 日の出町 (1) 
幡ケ谷 (1) <-------> 幡ヶ谷 (7) 
江ノ島店 (1) <-------> 江の島店 (1) 
さくらラウンシ (1) <-------> サクララウンシ (3) 
大イチョウ (1) <-------> 大いちょう (1) 
イチョウ (1) <-------> いちょう (1) 
さとう (1) <-------> サトウ (2) 
いちょう並木 (1) <-------> イチョウ並木 (1) 
横浜らーめん (1) <-------> 横浜ラーメン (1) 
サスケ (1) <-------> さすけ (1) 
馬見ケ崎 (1) <-------> 馬見ヶ崎 (2) 
サカイ (1) <-------> さかい (2) 
保土ケ谷区天王町 (1) <-------> 保土ヶ谷区天王町 (1) 
樋ノ口 (1) <-------> 樋の口 (2) 
ミンミン (1) <-------> みんみん (2) 
関ケ島 (1) <-------> 関ヶ島 (1) 
ふらいむ (1) <-------> フライム (1) 
チョコリ (1) <-------> ちょこり (1) 
やまと (1) <-------> ヤマト (2) 
すわん (1) <-------> スワン (1) 
中ムラ (1) <-------> 中むら (1) 

我要确保这不流过。假设我想将所有ム转换为む

+1

...但片假名穆或多或少无关的平假名穆 - 你为什么要强迫一个到另一个? – sarnold 2012-07-06 02:16:04

+0

因为我想使用这些字符作为主键,而utf8说这是同样的事情。 – 2012-07-06 02:23:04

+0

只要你知道你在做什么 - 一个真正的日本读者会发现与片假名变成平假名的文字很混乱和迷失方向。 (远远比英语为母语的人会发现阅读莎士比亚的漫画 - 它不仅仅是一种字体变化。)无论如何,只要你小心...... – sarnold 2012-07-09 23:49:38

回答

1

有一些可能对您有用的资源。你可以找到它们herehere。首先是一个可能的重复问题,其他几个功能可能会帮助您找出问题所在。第二篇是我在搜索你的问题时偶然发现的一篇文章。它原来是一个很好的阅读。

的东西更实用的是这样的:

Public Function RemoveAccentMarks(ByVal s As String) As String 
    Dim stringBuilder As New StringBuilder 
    Dim c As Char 
    For Each c In s 
     Dim v As Char = Chr(Asc(c) And &H7F) 
     stringBuilder.Append(v) 
    Next 

    Return stringBuilder.ToString 
End Function 

Source - 你需要滚动至底部,这是鲍勃·施特龙茨谁声称,它为他工作!)

希望帮助,我很喜欢这个问题(upvote)。这很有趣,信息丰富且有趣!

-sf

+0

我已经使用了你的2个来源。还有一些失踪。 – 2012-07-06 06:59:16

+0

嗯,可以通过另一个UnicodeCategory的字符? – sacredfaith 2012-07-06 16:24:49

+0

没有。无论如何,这是做什么Chr(Asc(c)And&H7F) – 2012-07-07 16:26:40

相关问题