空的文本框里插入一个法文字符后,过段时间文字长度莫名其妙地变长

哈利_蜘蛛侠 2016-09-20 12:03:26
在一个空的TextBox,比如说就叫textBox,里面插入一个非英语字母的法语字母,比如说
à,
然后保存textBox.Text属性,然后再将这个字符串赋值给另一个TextBox的话,那么这个新的TextBox的Text属性竟然变成了长度为12(也可能是11)的一个字符串!我一个一个字符地打印了出来,发现原有的字母在最后一个,而前面被插入了若干的空字符。请问这个是怎么回事呀?怎么避免呀?

当然这个是我在做一个软件的过程中遇到的问题的简略描述版。难道说TextBox有什么潜规则吗?然而如果TextBox里的文字是中文或者英文的话则完全没问题。而且刚开始插入的时候也是没问题的。难道说还跟字体有关吗?我的文本框的字体设置为Calibri了。真的是太令人不解了!
...全文
238 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-09-21
  • 打赏
  • 举报
回复
0xfeff utf-16be 的 BOM 头
哈利_蜘蛛侠 2016-09-20
  • 打赏
  • 举报
回复
引用 1 楼 yaaynn 的回复:
字符编码问题
研究了半天,总算有点头绪了,虽然方向不一定对。总结一下吧: 我那个软件出现的这个诡异的现象其实并不是我在标题和一楼里说的那么简单就能够重现的。实际上我的那个软件在两个文本框的操作中间还发生了保存文件、读取文件、使用KeyValuePair以及使用string.Split()函数等事情。之前使用Split()函数的时候,没有传第二个参数,这次传了System.StringSplitOptions.RemoveEmptyEntries这个第二个参数。这样当我从文件中读取那个长得像 "à" 的字符串时,Length只有2了。然后我发现这个字符串的第二个字符才是à,而第一个是一个神奇的、整数值是65279的字符! 上网搜了一下,发现还真有一些结果,不过好像都是跟UTF-8格式有关的。然而我操作文件的时候都是用的Encoding.Unicode呀!所以这到底是怎么个情况呢?还有就是为什么处理中英文的时候不会有这样的问题呢? 顺便吐槽一下:为什么C#调试的时候看不到string变量的属性呢?害得我还得要添加输出语句才知道这个长得跟 "à" 一样的字符串的两个字符分别是什么。
哈利_蜘蛛侠 2016-09-20
  • 打赏
  • 举报
回复
晕死,用另外的小程序来测试,竟然发现无法重现了。我得再花点时间才能够找到一个比较简单的重现方法
哈利_蜘蛛侠 2016-09-20
  • 打赏
  • 举报
回复
引用 1 楼 yaaynn 的回复:
字符编码问题
求详细解释。不过我觉得也可能跟我在程序中使用了string.Split函数有关。我晚上写一个比较小的测试程序来看看,有问题的话到时候再发上来。
yaaynn 2016-09-20
  • 打赏
  • 举报
回复
字符编码问题

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧