[問題] VS的Textbox會擅自轉換文字?

看板C_Sharp作者 (還在想)時間9年前 (2014/09/19 14:55), 9年前編輯推噓3(3011)
留言14則, 4人參與, 最新討論串1/1
我有一個越南字母 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://www.ptt.cc/bbs/C_Sharp/M.1411109730.A.307.html

09/19 15:00, , 1F
如果打入中文,比如說"我",這個檢查就完全沒問題說...
09/19 15:00, 1F

09/19 15:09, , 2F
unicode
09/19 15:09, 2F

09/19 15:13, , 3F
現在的問題就在於,資料剛打上textbox就變成普通字母
09/19 15:13, 3F

09/19 15:13, , 4F
根本還來不及做任何處理
09/19 15:13, 4F

09/19 15:14, , 5F
還有哪邊可以用上unicode的設定呢?
09/19 15:14, 5F

09/19 17:32, , 6F
如果你檢查的程式碼先取消,還是會有一樣的清況嗎?
09/19 17:32, 6F

09/19 17:33, , 7F
我剛試建了一個新的winform 我的textbox沒有這個問題說
09/19 17:33, 7F

09/19 17:33, , 8F
可以描述一下你的程式執行環境嗎
09/19 17:33, 8F
我發現一個情況,就是我的textbox設定字元長度為1 然後如果調大,這個字就可以顯示了 http://www.regexr.com/ 我把字貼在這網站上,發現他後面還跟著一個奇怪的符號 可是明明只是一個字 但這樣我就搞不懂了,如果是因為一個字元放不下表示這個字的所有資料 那中文字不是也應該會有一樣的問題嗎... 我在想這個字其實是一個e加上一個修飾,表現成一個字的樣子 所以如果只放的下第一個字,就只剩下e 但又不是所有的字都這樣orz... ※ 編輯: Peruheru (220.134.18.8), 09/19/2014 17:44:41

09/19 19:54, , 9F
你找關於surrogates and supplementary characters
09/19 19:54, 9F

09/19 19:54, , 10F
的文章看看吧.
09/19 19:54, 10F

09/19 19:55, , 11F
Unicode以normalization form D表示就會這樣.
09/19 19:55, 11F

09/19 19:56, , 12F
關於normalization form可到unicode.org找tr15
09/19 19:56, 12F

09/19 19:57, , 13F

09/19 19:59, , 14F
用String.Normalize()先轉換成NFKC表示吧.
09/19 19:59, 14F
感謝你的回應,我先將輸入欄位限制稍微調大 然後用 String.Normalize() 將輸入值轉換為NFC以後 就可以以單一字元的方式處理他了 因為我還有另一個需求是要用正規式檢查他 而我檢查的內容是不可以含有英數 按照說明中如果使用NFKC的話,似乎在 e 上面有一撇的情況也會被 e 的檢查結果查出 (說明中提到如果是羅馬字母的 11(XI) ,查 X 時NFC查不到而NFKC查的到) 所以我覺得我好像是該用NFC來處理 不知道我有沒有誤解 ※ 編輯: Peruheru (220.134.18.8), 09/22/2014 12:08:46
文章代碼(AID): #1K6zDYC7 (C_Sharp)