作者Peruheru (還在想)
看板C_Sharp
標題[問題] VS的Textbox會轉換文字?
時間Fri Sep 19 14:55:28 2014
我有一個越南字母
https://www.google.com.tw/#q=u%CC%81
從這邊可以看到這個字的長相
然後我的window form程式中有一個普通的textbox
輸入後程式會檢查輸入的文字是不是英文
如果是英文就提出警告
可是當我把這個字母輸入到textbox中
他的長相會變成普通的小寫英文字母u
然後被正規式檢驗為英文字母跳出警告
但這明明就是越南字母阿...
同樣的情況還發生在這個字母上
https://www.google.com.tw/#q=e%CC%81
這也是我貼上textbox後就變成普通的e了...
上面那撇就這樣不見,複製出來後也變成普通的英文字母e
要讓textbox能正確接受我輸入的文字
請問該怎麼改善比較好orz
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.18.8
※ 文章網址: http://webptt.com/m.aspx?n=bbs/C_Sharp/M.1411109730.A.307.html
1F:→ Peruheru: 如果打入中文,比如說"我",這個檢查就完全沒問題說... 09/19 15:00
2F:推 johnpage: unicode 09/19 15:09
3F:→ Peruheru: 現在的問題就在於,資料剛打上textbox就變成普通字母 09/19 15:13
4F:→ Peruheru: 根本還來不及做任何處理 09/19 15:13
5F:→ Peruheru: 還有哪邊可以用上unicode的設定呢? 09/19 15:14
6F:→ a926: 如果你檢查的程式碼先取消,還是會有一樣的清況嗎? 09/19 17:32
7F:→ a926: 我剛試建了一個新的winform 我的textbox沒有這個問題說 09/19 17:33
8F:→ a926: 可以描述一下你的程式執行環境嗎 09/19 17:33
我發現一個情況,就是我的textbox設定字元長度為1
然後如果調大,這個字就可以顯示了
http://www.regexr.com/ 我把字貼在這網站上,發現他後面還跟著一個奇怪的符號
可是明明只是一個字
但這樣我就搞不懂了,如果是因為一個字元放不下表示這個字的所有資料
那中文字不是也應該會有一樣的問題嗎...
我在想這個字其實是一個e加上一個修飾,表現成一個字的樣子
所以如果只放的下第一個字,就只剩下e
但又不是所有的字都這樣orz...
※ 編輯: Peruheru (220.134.18.8), 09/19/2014 17:44:41
9F:推 leicheong: 你找關於surrogates and supplementary characters 09/19 19:54
10F:→ leicheong: 的文章看看吧. 09/19 19:54
11F:→ leicheong: Unicode以normalization form D表示就會這樣. 09/19 19:55
12F:→ leicheong: 關於normalization form可到unicode.org找tr15 09/19 19:56
14F:推 leicheong: 用String.Normalize()先轉換成NFKC表示吧. 09/19 19:59
感謝你的回應,我先將輸入欄位限制稍微調大
然後用 String.Normalize() 將輸入值轉換為NFC以後
就可以以單一字元的方式處理他了
因為我還有另一個需求是要用正規式檢查他
而我檢查的內容是不可以含有英數
按照說明中如果使用NFKC的話,似乎在 e 上面有一撇的情況也會被 e 的檢查結果查出
(說明中提到如果是羅馬字母的 11(XI) ,查 X 時NFC查不到而NFKC查的到)
所以我覺得我好像是該用NFC來處理
不知道我有沒有誤解
※ 編輯: Peruheru (220.134.18.8), 09/22/2014 12:08:46