pb中oracle字符集问题

lionel_feng 2010-09-11 07:33:27
在c/s下,请问大家有没有办法动态设置oracle的字符集语句或者方法,因为工作需要可能要在两个不同的字符集之间来回的切换,每次都去修改注册表感觉很麻烦并且感觉这种方法也很笨拙,例如在.net中可以在主程序中写:
Environment.SetEnvironmentVariable("NLS_LANG", "SIMPLIFIED CHINESE_CHINA.ZHS16GBK", EnvironmentVariableTarget.Process);
不知道在PB中有没有这样的语句,只在该进程中修改了字符集而不影响其他,请大虾们多多指教~~~
...全文
237 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lionel_feng 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 msgtogcr 的回复:]
我一直是写注册表的,看到你的想法觉得很好,所以查了一下,这函数 pb 中没有,不过可以直接调用 api 实现:
FUNCTION ulong SetEnvironmentVariable(ref string lpName,ref string lpValue) LIBRARY "kernel32.dll" ALIAS FOR "SetEnvironmentVariableA"
[/Quote]
很感谢!!!
lionel_feng 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 msgtogcr 的回复:]
另外,我还有两点想说的是:

1. 因为字符的转换实际上是发生在 oracle 的线程中,也就是 oracle 的那些底层 dll 来完成的。我们在环境变量里设置字符集,其实是依赖于这些 dll 在读取字符集设定时的顺序,也就是先看环境变量,再看注册表。说实话,我并不知道 oracle 是不是这样干的,也没测试过。只是看网上大家的做法,似乎应该是这样不错。

2. 从 oracle 字符集……
[/Quote]

你的分析太透彻了~~ 小弟佩服!!!
十分感谢 我来晚了
做梦的猫 2010-09-12
  • 打赏
  • 举报
回复
另外,我还有两点想说的是:

1. 因为字符的转换实际上是发生在 oracle 的线程中,也就是 oracle 的那些底层 dll 来完成的。我们在环境变量里设置字符集,其实是依赖于这些 dll 在读取字符集设定时的顺序,也就是先看环境变量,再看注册表。说实话,我并不知道 oracle 是不是这样干的,也没测试过。只是看网上大家的做法,似乎应该是这样不错。

2. 从 oracle 字符集这个东西本身的角度说,我们是不应该这么干的。oracle 其实是希望我们给出客户端的真实字符集,而不是简单地把它设置为与服务器一致。于是问题来了,为什么 oracle 不强制使用操作系统的字符集呢?根据我的实际经验,还是因为 oracle 在字符集转换时做得不够到位!gbk 的编码在 utf-8 里不应该没有吧,可‘弢’和‘→’两头不设成一致的话,肯定变成问号!所以没办法,这个转换失真的问题只好通过客户端使用统一的操作系统去解决了。我觉得 oracle 公司应该及早解决这个问题,有哪个程序员喜欢做这种字符集颠来倒去的事情,何苦呢?
做梦的猫 2010-09-12
  • 打赏
  • 举报
回复
我一直是写注册表的,看到你的想法觉得很好,所以查了一下,这函数 pb 中没有,不过可以直接调用 api 实现:
FUNCTION ulong SetEnvironmentVariable(ref string lpName,ref string lpValue) LIBRARY "kernel32.dll" ALIAS FOR "SetEnvironmentVariableA"

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧