在Oracle中更改字符集utf8

mdfafbf1  于 2023-11-17  发布在  Oracle
关注(0)|答案(2)|浏览(126)

我在哈萨克语数据从一个数据库oracle转换到其他oracle时遇到问题。源数据库有AL 32 UTF8 NLS_CHARACTERSET(根据v$nls_parameters),目标数据库有CL 8 MSWIN 1251如何解决这个问题?我用informatica插入了raw

r55awzrz

r55awzrz1#

HOW TO: Set the Oracle NLS_LANG environment variable
将托管Informatica Services的计算机上的NLS_LANG环境变量设置为Oracle客户端操作系统正在使用的值。
对我来说,“Oracle客户端操作系统正在使用的价值”是什么意思还不清楚。
如果Informatica在Linux/Unix上运行,则可能很容易。
在Windows上,你实际上有两个字符集。OEM代码页适用于控制台(又名DOS窗口)和ANSI代码页通常适用于GUI应用程序。
您可以使用命令chcp询问(和修改)的OEM代码页
可以从注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP获取的ANSI代码页,用于从National Language Support (NLS) API Reference获取
我不知道哪一个适用于Informatica,但您应该可以尝试。

yh2wf1be

yh2wf1be2#

The Problem was in code type in target database. Client support utf16.
I decieded to solve it with translate function.

create or replace function fix_kaz_letters(p_word in varchar2) return varchar2 deterministic
  PARALLEL_ENABLE is
  c_bad_letters CONSTANT VARCHAR2(18 CHAR) := CHR(1112 USING NCHAR_CS) /*ә*/
                                              || CHR(1032 USING NCHAR_CS) /*Ә*/
                                              || CHR(1110 USING NCHAR_CS) /*і*/
                                              || CHR(1030 USING NCHAR_CS) /*І*/
                                              || CHR(1169 USING NCHAR_CS) /*ө*/
                                              || CHR(1168 USING NCHAR_CS) /*Ө*/
                                              || CHR(1111 USING NCHAR_CS) /*ү*/
                                              || CHR(1031 USING NCHAR_CS) /*Ү*/
                                              || CHR(1118 USING NCHAR_CS) /*ұ*/
                                              || CHR(1038 USING NCHAR_CS) /*Ұ*/
                                              || CHR(1171 USING NCHAR_CS) /*ғ*/
                                              || CHR(1170 USING NCHAR_CS) /*Ғ*/
                                              || CHR(1179 USING NCHAR_CS) /*қ*/
                                              || CHR(1178 USING NCHAR_CS) /*Қ*/
                                              || CHR(1187 USING NCHAR_CS) /*ң*/
                                              || CHR(1186 USING NCHAR_CS) /*Ң*/
   ;
  c_kaz_letters CONSTANT VARCHAR2(18 NCHAR) := CHR(1241 USING NCHAR_CS) /*ә*/
                                               || CHR(1240 USING NCHAR_CS) /*Ә*/
                                               || CHR(1110 USING NCHAR_CS) /*і*/
                                               || CHR(1030 USING NCHAR_CS) /*І*/
                                               || CHR(1257 USING NCHAR_CS) /*ө*/
                                               || CHR(1256 USING NCHAR_CS) /*Ө*/
                                               || CHR(1199 USING NCHAR_CS) /*ү*/
                                               || CHR(1198 USING NCHAR_CS) /*Ү*/
                                               || CHR(1201 USING NCHAR_CS) /*ұ*/
                                               || CHR(1200 USING NCHAR_CS) /*Ұ*/
                                               || CHR(1108 USING NCHAR_CS) /*ғ*/
                                               || CHR(1028 USING NCHAR_CS) /*Ғ*/
                                               || CHR(1116 USING NCHAR_CS) /*қ*/
                                               || CHR(1036 USING NCHAR_CS) /*Қ*/
                                               || CHR(1109 USING NCHAR_CS) /*ң*/
                                               || CHR(1029 USING NCHAR_CS) /*Ң*/
   ;
begin
  return translate(p_word, c_bad_letters, c_kaz_letters);
end;

字符串

相关问题