请选择 进入手机版 | 继续访问电脑版
查看: 127|回复: 7

[反馈] 会员表username字段长度问题

[复制链接]

7

主题

22

回帖

35

积分

初学乍练

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

使用道具 举报

2

主题

1375

回帖

1723

积分

应用开发者

啦啦啦~

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

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

使用道具 举报

8

主题

658

回帖

974

积分

Giter

贡献
10 点
金币
245 个
发表于 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

主题

22

回帖

35

积分

初学乍练

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

使用道具 举报

11

主题

1554

回帖

1762

积分

应用开发者

discuz 老兵

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

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

使用道具 举报

8

主题

658

回帖

974

积分

Giter

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

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

使用道具 举报

11

主题

1554

回帖

1762

积分

应用开发者

discuz 老兵

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

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

使用道具 举报

2

主题

1375

回帖

1723

积分

应用开发者

啦啦啦~

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

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

使用道具 举报

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

本版积分规则

添加有偿服务QQ
添加有偿服务微信