首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DB2如何使用PDO指定连接字符集

问DB2如何使用PDO指定连接字符集
EN

Stack Overflow用户
提问于 2014-11-26 15:56:10
回答 3查看 2.5K关注 0票数 1

我正在查找以下(并正在工作的) DB2查询的MySQL翻译:

代码语言:javascript
复制
SET NAMES 'UTF8'

我已经使用DB2连接到PDO_ODBC,并且可以成功地查询它,所以它不是连接问题。

驱动程序说NAMES是一个意外的令牌,所以我想还有另外一种方法来指定连接字符集。

我搜索过堆栈溢出,但大多数答案都是针对mysql驱动程序的,我不知道在IBM文档中搜索什么(这不是最适合导航的)

我正在寻找的是一个DB2可以接受的SQL查询,它具有与MySQL的SET NAMES xxx相同的效果

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-26 17:35:39

在DB2中不是等效语句。

使用标准操作系统区域设置运行DB2客户端应用程序。在UNIX/Linux上,这是通过LANG环境变量(可能被各种LC_*环境变量覆盖)设置的,而在LC_*上,这是使用控制面板进行配置的。

在使用PHP的Linux/UNIX上,这意味着您需要在web服务器启动时设置适当的locale环境变量。

备注:

  • DB2提供了使用DB2CODEPAGE注册表变量覆盖任何操作系统或环境级别设置的选项。此设置位于DB2客户端实例级别,因此它将影响使用已安装的DB2客户端连接的任何/所有应用程序。
  • 如果LOCALE确定的客户端应用程序代码页与数据库代码页不同,请注意DB2客户端将在两个方向执行客户端代码页和数据库代码页之间的代码页转换。
票数 2
EN

Stack Overflow用户

发布于 2014-11-26 16:37:31

DB2中的编码是在创建数据库时设置的。为了在数据库中插入正确的字符,应用程序必须以正确的编码方式执行并支持它。

票数 0
EN

Stack Overflow用户

发布于 2020-03-05 09:47:07

我正在使用pdo_ibm,并找到了一种正确设置字符集的方法,如下所示:

1)通过一些手动方式(DBeaver等)进行以下查询:

代码语言:javascript
复制
SELECT CODEPAGE FROM SYSCAT.DATATYPES WHERE TYPENAME = 'VARCHAR';

把结果记下来。例如: 1208

2)现在可以通过两种不同的方式设置代码页:

PHP方式

代码语言:javascript
复制
putenv('DB2CODEPAGE=1208');

首先使用此方法,然后实例化PDO对象。

OS方式

(取自01/books/AnyInstAdm784/AnyInstAdmPreInstall19.html)

适用于Windows:

  • 导航到“控制面板”>“系统”,然后单击“高级”选项卡。单击“环境变量”。
  • 在“系统变量”部分,单击“新建”。
  • 在变量名称字段中,DB2CODEPAGE。
  • 在Variable字段中,输入步骤1中返回的值。

对于UNIX,设置变量如下所示:

代码语言:javascript
复制
setenv DB2CODEPAGE <DB2CODEPAGE value>

例如: setenv 1208。

您可能需要在创建变量后重新启动机器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27153521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档