android中文字符的大小问题~~
来源:互联网 发布:java float 与0 编辑:程序博客网 时间:2024/06/05 04:01
最近在做一个小应用,在做的途中遇到一个无比纠结的问题,不过最终还是被我解决,首先赞一个
先说一下这个问题:先从文件中读一串字符(记住是中文!!!),android读文件操作,很简单吧,很多方法,我用的是
FileInputStream fin = openFileInput("sms");InputStreamReader is = new InputStreamReader(fin);接着用一个char[] 类型的buffer去读
char[] buffer = new char[100];String s="";
while(is.read(buffer) > 0){s += String.valueOf(buffer);}这个都是最基本的吧,然后放进一个String类型的字符串中,
Sring s = "";s = String.copyValueOf(buffer);//注意要用copyValueOf函数,直接toString函数会有乱码
最后将EditText控件设置为字符串s........接着纠结的事情就出现了,EditText手动编辑的时候,最后一个字符删不掉(或者得摁很多次backspace),纠结了,为什么了?
好吧,我承认我纠结了2天,不过最后还是慢慢的试出来了
为了说明这个问题,首先得用这条语句
Toast.makeText(this, s.length()+" "+ s, Toast.LENGTH_LONG).show();结果是“100 欢迎来到zhao_zepeng的博客"~~~
好吧,100!!说明在中文字符的后面还有很多空字符,了解,代码稍微该一改就行:
char[] buffer = new char[(int)new File("sms").length()];
问题解决,只要把char[]数组设置的刚好是中文字符串大小不就的了,当然不是!远远比这蛋疼
结果一样,依旧是得摁很多次backspace............
无语了,纠结了一段时间,再给出一个语句
char[] temp = new char[36];temp = "阿斯顿发生的发生的发生的".toCharArray();s = String.copyValueOf(temp);Toast.makeText(this, temp.length+"", Toast.LENGTH_LONG).show();结果是什么?36???
当然不是,12,靠,12个中文字大小等于12,亮瞎我的眼睛,不过事实就是这样,在小米和HTC手机上都一样,此图为证
这也行啊,好吧~
这下应该明了了吧,后面还有24个'\0',为什么啊,不明觉厉啊,不过事实如此,希望有人给我解答一下,谢谢~
ps:将字符串s经过如下命令处理即可
s = s.substring(0, s.indexOf('\0'))行了,没问题了
- android中文字符的大小问题~~
- osg android 中文字符问题
- mysql中文字符的问题
- 字符输出大小不一致的问题
- java 中文字符字节大小
- android开发 在adb shell下查询中文字符乱码及logcat中文乱码的问题
- android 照相大小的问题
- LAMP的中文字符乱码问题
- 输入中文字符的问题(imemode属性);
- 包含中文字符的URL编码问题
- 包含中文字符的URL编码问题
- 包含中文字符的URL编码问题
- 包含中文字符的URL编码问题
- 关于Jsp里面中文字符的问题
- java与C++中文字符的问题
- 读取cookie中文字符乱码的问题
- JAVA的中文字符乱码问题
- JAVA的中文字符乱码问题
- iOS7 UI改变总结
- CMUSphinx Learn - Training Acoustic Model For CMUSphinx
- OpenStack neutron floatingips 与 iptables 深入分析
- [转载] iOS开发分辨率那点事
- c3p0详细配置
- android中文字符的大小问题~~
- Objective-c学习
- Java包的静态导入import static和import的区别
- TTL以及LVDS接口传输
- C++必知必会之(15)指向类成员的指针并非指针
- Struts2动态方法调用
- retain和copy的区别
- hdoj 2095 find your present (2)
- WampServer 配置本地域名