前天,对一个旧系统进行维护,需要在两个装在Win平台上的Sybase数据库之间导数据,其中有两张表的中有text类型的字段,用BCP或者导出成Insert SQL都没办法完整地把数据导过去。无奈之下,只得求助于PowerBuilder的管道一张张表地导。还有一个问题是我的本本没办法连公司的VPN,只能在另一台机器上安装一个SYbase客户端,再拷一个PB上去,用这台机器做中介,把本本上的数据导到目标数据库里。两张表的数据其实也不多,一张是6021条记录,另一张表是31475条记录,但由于是通过VPN并且使用一个中间机来连公司主机与我的本本之间来导数据,所以导得很慢。好在需要用管道导的表就这两张。
用PB把管道建立好之后,开始导。导完第一张表之后,我没有去查看一下数据是否正确。因为以往用管道导数据做过很多次,很少出现问题,所以这次也觉得蛮有把握的,所以没有先去查看一下数据,接着就导第二张表了。
大概过了半小进左右,终于导完了,舒了一口气。为了保险起见,打开应用测试一下。一打开界面,把我吓傻了: 界面上一堆的“?”!咋就乱码了呢?
赶紧检查是啥原因。
第一步: 先看JDBC连接URL,没错啊,字符集转换的参数也在啊,用这个URL在MyEclipse里的数据工具查询数据试试,也是乱码...
第二步: 用PowerBuilder查询数据,数据又能正常显示,到底是咋了?
第三步: 查看一下两个数据库的字符集,源数据库是cp936,目标库是cp850,这两个不一样。但是,我的本本上的数据是从另外一个Sybase中导出的,那个数据库的字符集与我本本的字符集也不一样啊,咋就不乱码呢?
咋办呢?看来只有把两个数据库的字符集改成一样试试。为了保险起见,先把目标数据库的数据用BCP先导出来,免得改了字符集后,目标数据库其他数据都乱了。于是生成一个批处理的BCP脚本开始往外导数据。好慢啊,原来我忘了直接把数据导在目标库的主机上了,而是把数据往我本本上导,不过这已经都导了一小半了,就让他继续导吧,我好好想一下为什么会乱码。按理说,我本本上的数据也是从不同字符集上的库中用管道导过来的,咋不乱码?看来我想改字符集的想法不一定就能解决问题啊,可能另有原因吧。这次导数据与上次把数据导本本上唯一不同之处是上次是用本本上的PB来导的,而这次用一台中间机并新装了一个Sybase客户端。该不是新安装的SYbase客户端有问题吧。看看再说,打开Sybase客户端的locales.dat,找到[win32s]那一段,看到 locale = default, us_english, cp936,这个默认字符集与目标库的字符集不一样。而往本本上导时,用的是本本上的PB,PB调用的字符集与目标库是一致的,会不会是这个导致了乱码呢?试试再说吧。
停掉BCP进程,把中间机上的默认字符集改成locale = default, us_english, cp850,再重启一下。再打开PB,建好管道,重新开始导这两张乱码的表。
等...等...等了N久,终于导完了,再打开应用看一下,好了,俺熟悉的方块字终于再次出现了。
导完了,再回头分析一下原因。原因可能就是中间机在从源数据库读取数据后,把数据按cp936的编码方式insert到目标库中,而目标库的默认字符集却是cp850,而应用中却按照cp850方式从目标库中读取数据从而导致了数据乱码吧。其实这问题本来也不复杂,只是平时遇到的少,偶而碰到一次,没注意这个细节罢了。
分享到:
- 2006-11-20 14:06
- 浏览 2812
- 评论(0)
- 论坛回复 / 浏览 (0 / 3937)
- 查看更多
相关推荐
在使用PowerBuilder 9(PB9)开发应用程序时,可能会遇到一个特定问题,即当向非中文数据库(如SQL Server)插入中文字符时,数据在第三方软件中显示为乱码。这个问题主要是由于PB9对Unicode支持不足导致的。本文提供...
PB 数据管道使用说明 PB 数据管道是一种强大的数据集成工具,它提供了一种不同数据库之间传递数据和(或)表结构的方法。数据管道对象可以完成数据管道的功能,需要提供以下内容:需要数据源和目标数据库,并能够和...
在使用 Pb 将数据导入到 MySQL 5.0 时,中文乱码问题是一个常见的问题。在本文中,我们将讨论两个解决方案,帮助开发者快速解决中文乱码问题。 解决方案一:使用 set names 语句 在使用 Pb 将数据导入到 MySQL 5.0...
标题 "PB下数据管道的使用方法" 指的是在PowerBuilder(PB)环境中利用数据管道(Data Pipe)进行数据传输的技术。数据管道是PowerBuilder提供的一种高效、安全的数据通信机制,尤其适用于处理大量数据的实时传递。...
利用pb写的一个小demo,本来是想同步数据用的。虽然后面没有使用它。但还是分享给大家好了!demo很简单的,就是教大家怎么使用pipeline来同步数据!免费给大家,希望好评。当然了数据库我就不提供了。你们随便找个表...
在使用 PB 提交 WEB 请求时,发现中文参数会出现乱码问题,导致服务器无法正确处理请求。这个问题看似简单,但实际上需要进行深入的分析和尝试。 GETURL 方式 首先,我们尝试使用 GETURL 方式来提交 WEB 请求。在 ...
- 使用PB9的调试工具,可以逐行跟踪代码,了解每个步骤的工作原理,这对于学习和优化SOCKET通讯程序非常有帮助。 5. **应用场景**: - PB9中的SOCKET通讯常用于实时数据交换,例如监控系统、股票交易系统、在线...
在处理PB级别数据时,性能和效率是设计数据管道时必须考虑的关键因素。这可能涉及使用批处理或流处理技术。批处理适合对大量历史数据进行一次性处理,而流处理则用于实时或近实时的数据传输和处理,适用于需要快速...
使用PB编写DLL文件 使用PB编写DLL文件 使用PB编写DLL文件 使用PB编写DLL文件
PB 数据管道实用程序设计技术概述 PB 数据管道技术是 PowerBuilder 提供的一种强大数据管道技术,允许用户在不同数据库表之间移动数据,实现数据的复制、转换和整合。在本文中,我们将详细介绍如何在应用程序中实现...
PB查询分析器是一款基于PowerBuilder(PB)开发的SQL查询工具,它包含了源代码,允许开发者根据自身需求进行定制和嵌入到其他系统中。在本文中,我们将深入探讨这款工具的关键特性、工作原理以及如何利用提供的源码...
PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析...
标题 "完美解决PB MakeQRBarcode 二维码BMP图片调用" 涉及到的是在PowerBuilder(PB)环境中使用MakeQRBarcode函数生成二维码,并将其转换为BMP图像格式的过程。这一过程通常用于数据编码,使得可以快速扫描读取信息...
在开发过程中,尤其是在使用ASP.NET与SQL Server进行数据交互时,可能会遇到中文字符在数据库中显示为乱码的问题。本文将详细探讨这个问题的原因,并提供有效的解决方案。 ### 问题概述 当我们在ASP.NET 2.0应用...
通常,这会涉及使用PB的图形库或数据窗口对象,通过计算原始图片和目标图片框的宽高比例,然后设置相应的缩放因子,最后利用PB的绘图函数来绘制缩放后的图片。 在实际应用中,可能会使用如`DrawImage()`或`...
在软件开发中,尤其是涉及到数据交换时,PB和JSON都扮演着重要的角色。PB是Google推出的一种高效的数据序列化协议,而JSON则是一种轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析和生成,被广泛...
PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 ...
二、pb的webservice程序必须置于英文目录下,含中文路径时部署会出错; 三、代码只要改一个地方: n_webservice对象的of_retrieve函数中 sqlca.logpass设置为你测试数据库的sa对应密码即可 四、该代码只演示pb+ws的简单...
标题 "PB 计算器源代码 PB实例 用PB9.0实现" 指的是一种使用PowerBuilder(PB)9.0版本开发的计算器应用程序的源代码实例。PowerBuilder是一款强大的面向对象的开发工具,尤其适合构建数据库应用。在这个实例中,...