如何解决docker + oracle 即时客户端:编码问题
我使用这张图片:
image: sflyr/sqlplus:latest
和这个脚本(gitlab-ci):
script:
- |
/instantclient_11_2/sqlplus login/pwd@//myserveur.prod:1521/sid.mysid<<EOF
@myscript.sql
EOF
myscript.sql:
select 'é' from dual;
结果:
sql> sql>
'?
--
??
存在编码问题...
我尝试将其添加到脚本中以修复它,但它不起作用:
script:
- apt-get update && apt-get install locales
- apt-get update
- dpkg-reconfigure locales
- locale-gen
- export LANG=en_US.UTF-8
- locale
- |
/instantclient_11_2/sqlplus login/pwd@//myserveur.prod:1521/sid.mysid <<EOF
@myscript.sql
EOF
结果:
$ locale-gen
Generating locales (this might take a while)...
Generation complete.
$ export LANG=en_US.UTF-8
$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
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"
LC_ALL=
locale: $ /instantclient_11_2/sqlplus login/pwd@//myserveur.prod:1521/sid.mysid <<EOF # collapsed multi-line command
Cannot set LC_ALL to default locale: No such file or directory
sql*Plus: Release 11.2.0.3.0 Production on Sun Mar 14 21:47:41 2021
copyright (c) 1982,2011,Oracle. All rights reserved.
Connecte a :
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
sql> sql>
'?
--
??
知道如何解决这个问题吗?
解决方法
您使用哪个编辑器来创建 .sql 脚本?您在那里设置了哪种编码?
一旦你知道这些信息,你就必须告诉它 Oracle。这是由 NLS_LANG
参数完成的,例如export NLS_LANG=.AL32UTF8
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。