DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hxh57738897
今日帖子: 30
在线用户: 14
导航: 论坛 -> Web应用开发 斑竹:bodies  
作者:
男 wooder (木头) ★☆☆☆☆ -
普通会员
2023/2/27 19:16:56
标题:
请教。datasnap liunx下connection.execsql(str)总是乱码。 浏览:961
加入我的收藏
楼主: windows平台下都没问题,数据库是firebird,就是服务部署到centos下,执行语句存到数据里的数据就是乱码,但是用fdquery提交数据都没问题,类似这样的conn.execsql(str)这样执行中文就会乱码,str设成ansistring也不行。数据库字符集是gb_2312,试了半天,不知道改那里。数据库连接那里的CharacterSet设成NONe或gb_2312也不起作用。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2023/2/27 20:45:31
1楼: 你的服务器端是 Linux 还是客户端是 Linux?

Linux 的字符集是 GB_2312 么?

如果客户端和服务器端都完全相同的环境下, FdQuery 没问题,那你试试你的 str 采用 UTF8 编码。

FireBird 我一般数据库字符集我都用 UTF8 这样保证同时存入中文英文德文和繁体字都不会有问题。

这里总之就是你的 str 的编码问题。
----------------------------------------------
-
作者:
男 hq200306 (200306) ★☆☆☆☆ -
普通会员
2023/2/27 22:09:03
2楼: 1、windows的中文怎么弄都是正确的。
2、centos下数据库中文乱码的问题确实是很麻烦,我也碰到
3、包括delphi带clientdataset,在linux下怎么试中文都是乱码,有些机一用到clientdataset程序就跳出去
----------------------------------------------
-
作者:
男 wooder (木头) ★☆☆☆☆ -
普通会员
2023/3/1 14:51:27
3楼: 多谢二位回复,弄了半天还是不行。我今天在中间件里直接写插入语句,测试了下,一直是乱码。现在就是windows下都正常,包括中间件在windows下,数据库在centos上,都正常,只要中间件部署到centos就乱码。4个汉字就对应4个问号,????,我估计是转换字符串哪里出错了,用FDquery提交的都正常,就是这样execsql的乱码。字符串用ansistring/string/widestring,包括用UTF8Encode转换,都一样。连接stdb的字符集设了也没用。

function TServerMethods1.ExecSqlAnsi(Ps_Str: AnsiString):integer;
var Ls_Query,Ls_Type:ansistring;
begin
  Ls_Type := {$IFDEF LINUX}'LINUX'{$ELSE}'WINDOWS'{$ENDIF};
  Ls_Query := 'insert into yt_log values(''测试数据'',''' + Ls_Type + ''',''测试数据'',''2023/3/1 13:08:01'')';
  StDb.ExecSQL(Ls_Query);
  result := StDb.ExecSQL(Ps_Str);
end;
----------------------------------------------
-
作者:
男 wooder (木头) ★☆☆☆☆ -
普通会员
2023/3/1 15:34:33
4楼: 刚才试了下把centos的系统字符集改成gb2312,就可以了,execsql这里字符集根据系统来设定的。
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2023/3/1 16:12:33
5楼: 如果我没记错  可以 设定
const test = ''测试数据'' ; 指定编码
在论坛看到过一次
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2023/3/1 16:49:25
6楼: linux 默认uft-8的比较多
可以手动设定(系统不一样还是有差别)
乱码问题 典型软件
peazip不管怎么设定 zip中文目录的那种都识别不出。不是打不开就是?号

https://www.cnblogs.com/hyang0/p/6397331.html


locale -a|grep '^[z|e][h|n]'|grep \\.|grep -v iso
sudo locale-gen zh_CN.UTF-8
[@archlinux new-pac.wiki]$ sudo locale-gen zh_CN.UTF-8
[sudo]  的密码:
Generating locales...
  en_US.UTF-8... done
  zh_CN.GB18030... done
  zh_CN.GBK... done
  zh_CN.UTF-8... done
  zh_CN.GB2312... done
Generation complete.

locale-gen 后才能继续操作 localectl
例 1. 完全支持中文环境,但是以英文作为用户界面
/etc/locale.conf:
LANG=zh_CN.utf8
LC_MESSAGES=en_US.utf8

localectl  set-locale LANG=zh_CN.UTF8
现在用下面的命令在 /etc 文件夹里生成 关于地区的配置文件:

echo LANG=en_GB.UTF-8 > /etc/locale.conf
export LANG=en_GB.UTF-8
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS