【问题标题】:Reading unicode characters in sessions with wlatin1 encoding in SAS在 SAS 中使用 wlatin1 编码的会话中读取 unicode 字符
【发布时间】:2018-04-23 15:47:49
【问题描述】:

我有一个连接到 SQL Server 2012 实例的库。其中一个注册表包含国际地址,因此可以在nvarchar 列中包含非拉丁字符(中文、俄文等)。通过企业指南连接到表时,非拉丁字符丢失。

我尝试将 SAS Foundation sasv9.cfg 更改为指向默认编码为 utf-8 的 u8 nls 文件夹,而不是 en 文件夹,即 wlatin1

但是,我的用户随后抱怨他们使用 wlatin1 编码编写的数据集无法访问。将 sasv9.cfg 文件更改回“en”nls 文件夹即可解决此问题。

有没有办法让用户以utf-8? 开始他们的个人会话来玩这个游戏

谢谢

【问题讨论】:

  • 为什么用户无法在 u8 会话中读取 WLATIN1 数据集?这对我来说似乎是错误的。 SAS 或许可以在这方面提供帮助。
  • 您是使用 EG 与本地 SAS 还是连接到服务器?您可以让您的 SAS 管理员使用不同的编码设置两个应用服务器。
  • @Joe - wlatin1 到 utf8 的转换肯定存在问题,我在当前的项目中遇到了这些问题..
  • @Tom 的建议不错

标签: sql-server unicode encoding utf-8 sas


【解决方案1】:

您有几种方法可用。一种是使用inencoding=utf8library option

如果失败,您可以尝试使用encoding=utf8 dataset option

万不得已,您可以使用kcvt function 来翻译特定变量,例如:

kcvt(YourVariable,'utf8','wlatin1')

您无法在不更新配置文件的情况下修改工作区会话的编码,尽管可以通过设置客户端的上下文来“游戏”存储过程会话 - 请参阅 locale gotcha

【讨论】:

  • +1 选项。不幸的是仍然没有乐趣,所以我认为它必须是会话或失败的配置文件中的默认编码。我会就此与 SAS 取得联系。
  • 另一件事要尝试 - 在进行转码之前增加变量的长度。一些双字节字符会在您的(以前的)单字节编码中占用更多空间。
猜你喜欢
  • 2023-03-14
  • 2012-12-02
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
  • 2012-04-21
  • 2019-01-18
  • 1970-01-01
相关资源
最近更新 更多