递归火山软件开发平台

标题: 关于mysql库 [打印本页]

作者: z3201    时间: 2026-6-26 22:34
标题: 关于mysql库
mysql库的数据的处理居然都是转换成ANSI,还不能换? ! 那不又和易语言一样了么,,遇到一些特殊字符还是返回??..能改成utf-8或者utf-16le吗? 或者自己定义,,
{    @ if (GetMysql()) return !(BOOL)mysql_query(GetMysql(), GetMbsText (@<语句内容>, CVolMem (), NULL));    @ return FALSE;}包括执行sql语句,,现在我只能用二进制语句,,读记录集全部用读字节集...

作者: 创世魂    时间: 2026-6-27 07:04



(, 下载次数: 217)

作者: 创世魂    时间: 2026-6-27 07:08
刚看了一下,  读文本数据 这个方法里面用的是  多字节到文本 ,封的时候可能没有考虑编码问题吧。。

那你就只能用 读字节集数据 了。



                    

                        

                           

                           
正在渲染火山代码...

                        

                    

                    复制代码
               

作者: z3201    时间: 2026-6-27 15:55
创世魂 发表于 2026-6-27 07:04

置字符集没用的,,他一样会转换,,
作者: z3201    时间: 2026-6-27 16:30
创世魂 发表于 2026-6-27 07:08
刚看了一下,  读文本数据 这个方法里面用的是  多字节到文本 ,封的时候可能没有考虑编码问题吧。。

那你 ...

不管你置什么字符编码,内部都会转换成ansi编码,所以这里才会用多字节转,,关键函数
const CHAR* GetMbsText (const WCHAR* szText, CVolMem& memBuf, INT_P* pnpResultTextLength)
{
    if (IsEmptyStr (szText) == FALSE)
    {
        const INT_P npLenIncludeEndZero = wcslen (szText) + 1;  // 获得包括结束零字符的待转换文本长度
        INT_P npBufLen = ::WideCharToMultiByte (CP_ACP, 0, szText, (INT)npLenIncludeEndZero, NULL, 0, NULL, NULL);
        CHAR* psBuf = (CHAR*)memBuf.Alloc (npBufLen * (INT_P)sizeof (CHAR));
        npBufLen = ::WideCharToMultiByte (CP_ACP, 0, szText, (INT)npLenIncludeEndZero, psBuf, (INT)npBufLen, NULL, NULL);

只提取部分代码,,这里已经做了编码转换,,只能重新封装下执行sql的函数了,,不使用GetMbsText ..并且这个函数非常多的地方使用了,,也就是都限制了只能用ansi编码,,

作者: gzylove    时间: 2026-6-27 21:57
应该多加几个方法




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4