限定字节长度后,当某一文件名超过限度,文件名显示问题?

bengal1124 2012-11-21 03:06:10
为什么文件名不仅显示不全,而且最后面显示?之类的字符
...全文
294 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
BYD123 2012-11-26
  • 打赏
  • 举报
回复
上代码,才知道真相。
swordtan 2012-11-26
  • 打赏
  • 举报
回复
引用 7 楼 bengal1124 的回复:
一共四个字节,每个中文对应两个字节,'中'对应D6D0,'文'对应CEC4 如果保留3个字节,那么'文'的后一个字节就被截掉了,显示就不正确了
bengal1124 2012-11-26
  • 打赏
  • 举报
回复
引用 6 楼 swordtan 的回复:
如果是文件名中存储在中文,且是多字节编码方式(GBK、GB2312等),中文一般占用两个字节,而英文一个字节,中英文混合的文件名, 字节长度时不固定的,如果你按长度阶段字符串,将有可能正好将一个中文字符的两个字节分开了,所以显示?。 windows下 可以用函数widechartomultibyte函数将多字节字符串转换为宽字符串, 然后用multibytet……
有时候显示的不是? 而是... 能不能详细的给我举个例子哇。我真的觉得你说的什么截断很抽象 弄不明白
ylgm44 2012-11-22
  • 打赏
  • 举报
回复
拟用UNICODE字符,然后定义字符串的时候,不要使用char数组,而是使用wchar数组,就不会出这种问题了。。因为unicode字符,所有的字符都是两个字节,不可能被截断了。
swordtan 2012-11-22
  • 打赏
  • 举报
回复
如果是文件名中存储在中文,且是多字节编码方式(GBK、GB2312等),中文一般占用两个字节,而英文一个字节,中英文混合的文件名, 字节长度时不固定的,如果你按长度阶段字符串,将有可能正好将一个中文字符的两个字节分开了,所以显示?。 windows下 可以用函数widechartomultibyte函数将多字节字符串转换为宽字符串, 然后用multibytetowidechar函数,限定多字节字符串的长度,将宽字节字符串转换为多字节字符串。 linux下则可用iconv库
版主大哥 2012-11-21
  • 打赏
  • 举报
回复
你上代码别人不就帮你搞定了。 一个汉字是2个字节,当一个汉字被截了,就不知道显示什么了,可能是? 也可能是其他的
bengal1124 2012-11-21
  • 打赏
  • 举报
回复
引用 1 楼 ylgm44 的回复:
不知道你说的是自己写的程序还是什么。 如果是自己写的程序,文件名应该是被截断了。。而如果用的中文,有可能截断的地方刚好是半个中文字符,这样就会显示?了。
嗯 就是自己写得 而且是文件名被截断,是中文的。为什么刚好是半个中文字符的时候 就现实的是?呀
newtee 2012-11-21
  • 打赏
  • 举报
回复
无图无真相
ylgm44 2012-11-21
  • 打赏
  • 举报
回复
不知道你说的是自己写的程序还是什么。 如果是自己写的程序,文件名应该是被截断了。。而如果用的中文,有可能截断的地方刚好是半个中文字符,这样就会显示?了。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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