作者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/cn.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