返回列表 发帖
查看: 566|回复: 7

[求助] 会员表username字段长度问题

7

主题

36

回帖

61

积分

渐入佳境

贡献
1 点
金币
10 个
发表于 2023-1-24 21:32:44 | 显示全部楼层 |阅读模式
升级之前是GBK,这个字段15字节,可以放7个汉字,现在升级为UTF8之后,这个字段长度没变,只能放5个汉字,导致那些6、7个汉字的用户名给截掉了。
建议完善升级程序,把这个字段的长度改长一些,既是兼容性问题,也是让用户名可以长一些。
我知道答案 回答被采纳将会获得1 贡献 已有7人回答
回复

使用道具 举报

2

主题

1412

回帖

2043

积分

应用开发者

啦啦啦~

贡献
55 点
金币
320 个
发表于 2023-1-24 21:47:09 | 显示全部楼层
MySQL 很早以前就把字段长度定义为字符数了,所以数据库字段是字符数。
理论来说也可以改造成字符数,不过因为用户习惯、页面展示、UCenter 与第三方对接等因素所以程序还是按 "字" 控制。
Discuz! 和 UCenter 对于用户名有 "字" 这样的特殊计算方法,用户名里面的一个中文算两个字节,所以是可以支持七个汉字+一个字母的。

QQ截图20230124214514.jpg
老周博客
本人不在任何渠道提供任何付费技术支持服务, 谨防上当受骗.
回复 支持 反对

使用道具 举报

12

主题

1603

回帖

2712

积分

Giter

贡献
143 点
金币
353 个
发表于 2023-1-24 21:49:23 | 显示全部楼层
MySQL的长度计算是按“字符数”计算的,不管是GBK还是UTF8,都是一个字算一个单位,不是按字节数计算的。
Discuz这边有额外的长度算法(避免纯汉字场景下内容过长造成UI溢出),但一般也是统一按一个汉字等于2个英文字母计算,正常情况下是不会出现只能放5个汉字这种情况的。
随便给你举个例子:https://www.dismall.com/home.php?mod=space&uid=498
你看这位的用户名就已经是6个字了

出现这种情况的话,建议检查一下是否残留了X3.4时代的文件。
回复 支持 反对

使用道具 举报

7

主题

36

回帖

61

积分

渐入佳境

贡献
1 点
金币
10 个
 楼主| 发表于 2023-1-25 15:10:18 | 显示全部楼层
多谢两位回复。
回复 支持 反对

使用道具 举报

14

主题

1783

回帖

2045

积分

应用开发者

discuz 老兵

贡献
7 点
金币
188 个
QQ
发表于 2023-1-25 22:55:50 | 显示全部楼层
老周部落 发表于 2023-1-24 21:47
MySQL 很早以前就把字段长度定义为字符数了,所以数据库字段是字符数。
理论来说也可以改造成字符数,不过 ...

  不过啊   用户昵称的长度 的确是个问题。    比如 政府单位 注册的时候习惯用全城  这一全称就是多个字
回复 支持 反对

使用道具 举报

12

主题

1603

回帖

2712

积分

Giter

贡献
143 点
金币
353 个
发表于 2023-1-25 22:59:37 | 显示全部楼层
耗子 发表于 2023-1-25 22:55
不过啊   用户昵称的长度 的确是个问题。    比如 政府单位 注册的时候习惯用全城  这一全称就是多个字 ...

这个暂时来说还没有太好的办法,如果只是自用的话可以自己改一下长度
官方版本因为涉及到了UCenter,与其他应用对接之类的问题导致用户名不能随意加长,否则会出现跨应用兼容性问题。而且还有一方面是Discuz许多位置的UI也只留了那么大,如果用户名加长的话会导致界面溢出甚至错位的现象发生。
回复 支持 反对

使用道具 举报

14

主题

1783

回帖

2045

积分

应用开发者

discuz 老兵

贡献
7 点
金币
188 个
QQ
发表于 2023-1-25 23:06:56 | 显示全部楼层
专家 发表于 2023-1-25 22:59
这个暂时来说还没有太好的办法,如果只是自用的话可以自己改一下长度
官方版本因为涉及到了UCenter,与其 ...

  历史遗留问题
回复 支持 反对

使用道具 举报

2

主题

1412

回帖

2043

积分

应用开发者

啦啦啦~

贡献
55 点
金币
320 个
发表于 2023-1-26 01:25:16 | 显示全部楼层
耗子 发表于 2023-1-25 22:55
不过啊   用户昵称的长度 的确是个问题。    比如 政府单位 注册的时候习惯用全城  这一全称就是多个字 ...

政府单位全称十几个字基本算是标配,XXXXXX街道办事处这种也不是没有,按这个考量用户名长度不现实,建议使用头衔功能代替。
老周博客
本人不在任何渠道提供任何付费技术支持服务, 谨防上当受骗.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-3-29 09:57 , Processed in 0.047451 second(s), 9 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 快速发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表