关于mysql库
mysql库的数据的处理居然都是转换成ANSI,还不能换? ! 那不又和易语言一样了么,,遇到一些特殊字符还是返回??..能改成utf-8或者utf-16le吗? 或者自己定义,,{ @ if (GetMysql()) return !(BOOL)mysql_query(GetMysql(), GetMbsText (@<语句内容>, CVolMem (), NULL)); @ return FALSE;}包括执行sql语句,,现在我只能用二进制语句,,读记录集全部用读字节集...
刚看了一下,读文本数据 这个方法里面用的是多字节到文本 ,封的时候可能没有考虑编码问题吧。。
那你就只能用 读字节集数据 了。
<火山程序 类型 = "通常" 版本 = 1 />
方法 读文本数据 <公开 类型 = 文本型 注释 = "提供指定字段(列)名称,读出记录集当前行该字段对应的数据内容." 返回值注释 = "返回所读到的数据.">
参数 字段名 <类型 = 文本型 注释 = "提供所欲读出数据对应的字段名称.">
{
返回 (多字节到文本 (读字节集数据 (字段名)))
}
创世魂 发表于 2026-6-27 07:04
置字符集没用的,,他一样会转换,, 创世魂 发表于 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编码,,
应该多加几个方法
页:
[1]