|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2020/9/22 17:00:36 |
标题: |
delphi10.4.1 ios英文系统下显示中文是乱码 |
浏览:1495 |
|
加入我的收藏 |
楼主: |
从数据库读取某一个字段,字段里面是中文内容,然后付给lable中的caption。 先说明一下:在ios中文系统显示完全正常,取值--显示。 但是在ios英文环境下:显示的内容就是乱码了。
----------------------------------------------
-delphi1,2,3,4(正版4.5wrmb),6,7。。。xe6 |
作者: |
|
2020/9/22 17:01:46 |
1楼: |
数据库 可能没有配置 正确的 文字编码。 数据库种类太多,控件也多。还是问你的 数据库控件吧。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2020/9/22 17:21:29 |
2楼: |
关键是 中文环境下 一切都正常,只是英文的ios手机出现乱码
----------------------------------------------
-delphi1,2,3,4(正版4.5wrmb),6,7。。。xe6
|
作者: |
|
2020/9/22 17:32:14 |
3楼: |
因为英文的系统中,没有中文字体。 如果你使用了哪种中文字体,请安装对应中文字体。
----------------------------------------------
武汉天气不好
|
作者: |
|
2020/9/22 17:35:17 |
4楼: |
英文系统有中文字体,这个可以排除
----------------------------------------------
-delphi1,2,3,4(正版4.5wrmb),6,7。。。xe6
|
作者: |
|
2020/9/23 9:27:50 |
5楼: |
1,数据库的编码; 2,有中文字体,不一定有你指定的中文字体名。。。
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
作者: |
|
2020/9/23 10:17:54 |
6楼: |
utf8μıàÂëÎa: 上面英文系统获得的值,大家看看怎么转换
----------------------------------------------
-delphi1,2,3,4(正版4.5wrmb),6,7。。。xe6
|
作者: |
|
2020/9/23 10:32:32 |
7楼: |
中文系统正常,是这样的:
utf8的编码为:瓒呯骇绠$悊鍛? 原始的字符为:超级管理员
英文系统是这样的:
utf8的编码为:Â3¬¼¶Â1ÃœÃÃ-Ô± 原始的字符为:3¬¼¶1üàíÔ±
问题就是英文系统下如何把原始的字符也转换为:超级管理员
----------------------------------------------
-delphi1,2,3,4(正版4.5wrmb),6,7。。。xe6
|
作者: |
|
2020/9/23 10:44:52 |
8楼: |
如果你使用了正确的数据库控件,比如 FireDAC,如果你的数据库的 CharSet 和字段的 CharSet 使用的是 UTF8,那么,在 DBEdit 里面显示出来是没有问题的。
如果你从 DataSet.FieldByName('').AsString 拿到的是 UTF8 的编码字符串,在该字段的 OnGetText 事件里面自己转码一下也可以啊。也就是 DisplayText := UTF8Decode(Field.AsString) 类似的语句。
至于你说中文底下没问题,英文下有问题,很简单,假设你的数据库的 CharSet 设置的是 GB2312,那肯定中文底下没问题。但其它系统就难说。
所以我现在设计数据库时都选 UTF8,保证多语言支持。
另外:Delphi 10.3.3 之前的版本,数据库 UTF8 字段的支持,DBEdit, DBLabel 等等没问题,DBMemo 有问题需要自己写代码转一下。但 10.3.3 我测试这个问题已经没有了。
----------------------------------------------
-
|
作者: |
|
2020/9/23 10:46:07 |
9楼: |
试试字段类型改为nvarchar
----------------------------------------------
-
|
作者: |
|
2020/9/23 16:58:27 |
10楼: |
楼上的提议是正确的,谢谢! mark, 结贴。
----------------------------------------------
-delphi1,2,3,4(正版4.5wrmb),6,7。。。xe6
|
作者: |
|
2020/9/24 8:33:24 |
11楼: |
真的解决了吗? 同样情况,在英文安卓下正常吗? 为何数据库字段就使用一般的char类型,在英文安卓下正常呢?
----------------------------------------------
-
|
作者: |
|
2020/9/25 9:40:50 |
12楼: |
当然解决了,英文系统下对char类型是可以识别并显示的,varchar类型需要更改为nvarchar才能在英文系统下识别并正确显示。 当然,在中文系统下什么类型都是可以的。
----------------------------------------------
-delphi1,2,3,4(正版4.5wrmb),6,7。。。xe6
|
作者: |
|
2020/9/25 11:33:28 |
13楼: |
我的意思是,用char类型存贮中文,是否存在在英文android上正常,但在ios上不正常?当然用Nvarchar存贮任何多字节字符,在任何系统下都会是正常的。
----------------------------------------------
-
|
|