gpt4 book ai didi

linux - 当从 Linux 服务器中的 sqlplus 插入时,Windows-1252 (80-9F) 控制字符在 oracle db 中插入为 �

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:07 24 4
gpt4 key购买 nike

当我在 Windows 中插入来自 sql Developer 的 Windows-1252 (80-9F) 控制字符时,它们会正确插入到 oracle db 中。

但是当我在Linux服务器中使用sqlplus时,控制字符在同一个数据库中插入为�。

例如,当我在linux服务器sqlplus中执行以下语句时,

insert into demo values ('“a”');

我将以下输出插入到数据库中:

�a�

对于其他控制字符也会发生同样的情况,例如 Œ、Ž、Š、< 等。

我的区域设置:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"

有人可以帮助我吗?

最佳答案

您的 Linux 机器使用 UTF-8 (LANG=en_US.UTF-8),因此您需要告诉 SQL*Plus 您键入的所有内容都使用该编码。这样做的方法(据我所知 the only way to do so )是创建 NLS_LANG 环境变量并将其指定为 UTF-8 的 Oracle 代码 - 我在 Google 搜索到的文档中发现了两个不同的值:

NLS_LANG=American_America.UTF8
NLS_LANG=AMERICAN_AMERICA.AL32UTF8

Oracle Database Client Globalization Support并没有说明这个主题,但我一直使用 AMERICAN_AMERICA.AL32UTF8

关于linux - 当从 Linux 服务器中的 sqlplus 插入时,Windows-1252 (80-9F) 控制字符在 oracle db 中插入为 �,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26020438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com