oracle WHERE子句中不解释重音符号,UNISTR()函数不起作用

ix0qys7i  于 2023-01-12  发布在  Oracle
关注(0)|答案(1)|浏览(309)

当查询在WHERE子句上包含重音符号时,查询不返回任何内容
口音是问题的根源,我不知道如何解决它。
我认为UTF8中的编码没有完成,ORACLE UNISTR('')方法不起作用。
这两个查询在ORACLE SQL DEVELOPER中返回结果
此查询适用于:

$database->Parse("SELECT
            ID_WORKSPACE_USERS,
            LOGIN_WORKSPACE_USERS,
            FONCTION_WORKSPACE_USERS
            FROM WORKSPACE_USERS 
            WHERE FONCTION_WORKSPACE_USERS = UNISTR('Job 1')"
        );

此查询不起作用(我的数据库中没有任何额外空间):

$database->Parse("SELECT
            ID_WORKSPACE_USERS,
            LOGIN_WORKSPACE_USERS,
            FONCTION_WORKSPACE_USERS
            FROM WORKSPACE_USERS 
            WHERE FONCTION_WORKSPACE_USERS = UNISTR('Job é')"
        );
gzszwxb4

gzszwxb41#

我找到了解决方案,这段代码允许使用UTF8编码查询数据库
您必须指明$字符集= 'AL 32 UTF8'。
此外,session_mode可以取3个值:
0:使用数据库编码
1:使用国家编码
2:使用AL 32 UTF8编码
我个人将session_mode设置为null,因为设置$character_set就足够了。
所以我从我的请求中删除了UNISTR函数,不再需要了。

$character_set = 'AL32UTF8';
$session_mode = null;

oci_connect($login, $password, $description, $character_set, $session_mode);

相关问题