ISQL + MSSQL Server(Linux)-使用重音符号时插入和选择问题

时间:2019-02-21 17:12:36

标签: sql-server unixodbc isql

我有一个数据库,其中的表中包含带有重音符号的文本。

例如:João,César,Pão,Açucar(使用ptBR语言的单词)。

例如,当我使用SQL Management Studio或DBeaver进行查询时,该列的内容将正确显示。但是,同一查询指令通过ISQL执行时,不会显示带重音符号,而是显示一个问号。 例如:Jo?o,C?sar,P?o,A?ucar

我尝试了以下过程:

  • 将部分的LANG更改为en_US.ISO88591(未成功)
  • 将LC_TYPE更改为POXIS / C(失败)
  • 使用参数-len_US.ISO88591在ISQL中建立连接(不成功)

重要:

  • 通过SQLCMD执行同一查询时,正确显示字符。
  • 我不能仅依赖SQLCMD,因为某些服务器仅具有ISQL

有人已经经历过这种情况吗? 是否有姑息治疗或错误修复程序可以解决此问题?

编辑:重现问题的步骤

::::Statement to create database::::

CREATE DATABASE [dbaccess]
ON PRIMARY 
( NAME = N'dbaccess', FILENAME = N'/var/opt/mssql/data/dbaccess.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ), 
FILEGROUP [DBACCESS_DATA] DEFAULT
( NAME = N'dbaccess_data', FILENAME = N'/var/opt/mssql/data/dbaccess_data.ndf' , SIZE = 500MB , MAXSIZE = UNLIMITED, FILEGROWTH = 50MB ), 
FILEGROUP [DBACCESS_IDX] 
( NAME = N'dbaccess_idx', FILENAME = N'/var/opt/mssql/data/dbaccess_idx.ndf' , SIZE = 100MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10MB )
COLLATE Latin1_General_BIN
GO


::::Statement to create table::::
CREATE TABLE dbo.T1(T1_CPOC VARCHAR(20) NOT NULL  CONSTRAINT T1_T1_CPOC_DF DEFAULT '                    ')

::::Statement to insert data::::
INSERT INTO dbo.T1(T1_CPOC) VALUES ('çÇáÁéÉíÍêÊãÃõÕ')

:::: Statement to connect to database from ISQL::::
isql -v <dsn_name> <user> <password>

:::: Query and Result  ::::
SQL> select * from T1
+---------------------+-----------+---------------------+---------------------+
| T1_CPOC             | D_E_L_E_T_| R_E_C_N_O_          | R_E_C_D_E_L_        |
+---------------------+-----------+---------------------+---------------------+
| ??????????????      |           | 1                   | 0                   |
+---------------------+-----------+---------------------+---------------------+

我感谢社区的支持!

0 个答案:

没有答案