我們有PHP服務器代碼,針對我們的iSeries中型系統執行SQL語句。PHP/SQL - 將EBCDIC轉換爲ASCII
下面是SQL查詢的簡化版本
SELECT 'Regular' "sales_type", sum(sales_type1) "sales" FROM salesTable
執行查詢就好了,問題是,使用靜態字段/值,如「SomeText」「標題」和結果時在PHP回來,他們不是想要的格式
string(7) "م�����"
要連接到系統和檢索結果
db2_connect ('*LOCAL', 'user', 'pass');
if (! $connection) {[error code]}
$stmt = db2_prepare ($connection, $strSql);
if (! db2_execute ($stmt)) { [error code ]
while ($row = db2_fetch_array ($stmt)) {
var_dump($row[1]);
}
我們對PHP版本5.2.17
我們的iSeries是V7R1M0
到服務器端轉換與PHP或SQL查詢自身將是巨大的一個解決方案。
謝謝!
編輯
從雄鹿隊的建議,我們已經改變了用戶配置文件CCSID到65535 37代替
現在我們回到(下圖)這是一個有點接近...
string(7) "Ù…‡¤「™"
這可能是因爲我們只改變了用戶?系統,工作或表格是否需要更改?
編輯2
這裏是輸出的phpinfo
_COOKIE["ZDEDebuggerPresent"] php,phtml,php3
_SERVER["ZendEnablerConfig"] /www/zendserver/conf/fastcgi.conf
_SERVER["PHPRC"] /usr/local/ZendSvr/etc/
_SERVER["PHP_FCGI_CHILDREN"] 40
_SERVER["PHP_FCGI_MAX_REQUESTS"] 0
_SERVER["CCSID"] 819
_SERVER["LANG"] C
_SERVER["INSTALLATION_UID"] 20101203131436121338
_SERVER["LDR_CNTRL"] MAXDATA=0x40000000
_SERVER["LIBPATH"] /usr/local/ZendSvr/lib
_SERVER["DB2NOEXITLIST"] TRUE
_SERVER["ORACLE_HOME"] .
_SERVER["ORA_NLS10"] no value
_SERVER["ORA_NLS_PROFILE33"] no value
_SERVER["FCGI_ROLE"] RESPONDER
_SERVER["REDIRECT_UNIQUE_ID"] [email protected]
_SERVER["REDIRECT_STATUS"] 200
_SERVER["UNIQUE_ID"] [email protected]
_SERVER["QIBM_USE_DESCRIPTOR_STDIO"] Y
_SERVER["HTTP_HOST"] vmas400.vm.com:10090
_SERVER["HTTP_CONNECTION"] keep-alive
_SERVER["HTTP_X_REQUESTED_WITH"] XMLHttpRequest
_SERVER["HTTP_USER_AGENT"] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
_SERVER["CONTENT_TYPE"] application/x-www-form-urlencoded
_SERVER["HTTP_ACCEPT"] */*
_SERVER["REFERER"] http://vmas400.vm.com:10090ZendServer/Index/Index
_SERVER["HTTP_REFERER"] http://vmas400.vm.com:10090/ZendServer/Index/Index
_SERVER["REFERER_URL"] http://vmas400.vm.com:10090/ZendServer/Index/Index
_SERVER["HTTP_ACCEPT_ENCODING"] gzip,deflate,sdch
_SERVER["HTTP_ACCEPT_LANGUAGE"] en-US,en;q=0.8
_SERVER["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.3
_SERVER["HTTP_COOKIE"] ZENDSERVERSESSID=7asfv608qffhv556msem6evi66; CosmeticContest=16062; CompanyWithStoreDetail=16061; TYLYClassAnalysis=16068; OrderDetail=17220; RmsOrders=17221; DailyReceipts=16063; DailySales=17562; OnOrder=16064; OpenPurchaseOrders=17566; RegularPriceRankings=17568; ReviewStatistics=17570; SalesAndStock=17573; StocksByPeriod=17575; Top10BestSellers=17577; ReplenishmentAssortment=17269; RABS=17616; FreeFormatSku=16473; TYLYSalesAndOH=21294; SalesRecapByDate=16312; VendorAgendaSummary=23219; BasicStock=23474; InStock=16067; RegSalesAvgStockSummary=21270; TYLYSalesMDGMByStore=23822; VendorAgenda=23826; Header=16066; usc=adam; hudi[u]=d106b7a04c0d94b8a0e7624a017ead98324b57e8; hudi[i]=fec51923e58c84db4647d2b3e11fe03ec3f0c202; FreeFormat=16506; __utma=118969486.352613215.1355776933.1365626094.1367348033.12; __utmz=118969486.1355776933.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ZDEDebuggerPresent=php,phtml,php3
_SERVER["PATH"] /bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin
_SERVER["SERVER_SIGNATURE"] no value
_SERVER["SERVER_SOFTWARE"] Apache
_SERVER["SERVER_NAME"] vmas400.vm.com
_SERVER["SERVER_ADDR"] 192.168.1.2
_SERVER["SERVER_PORT"] 80
_SERVER["REMOTE_ADDR"] 172.16.129.193
_SERVER["DOCUMENT_ROOT"] /www/zendserver/htdocs/prod
_SERVER["SERVER_ADMIN"] [no address given]
_SERVER["SCRIPT_FILENAME"] /usr/local/zendsvr/gui/html/index.php
_SERVER["DOCUMENT_NAME"] /usr/local/zendsvr/gui/html/index.php
_SERVER["REMOTE_PORT"] 14259
_SERVER["REDIRECT_QUERY_STRING"] dojo.preventCache=1367519066445
_SERVER["REDIRECT_URL"] /ZendServer/Information/Phpinfo
_SERVER["GATEWAY_INTERFACE"] CGI/1.1
_SERVER["SERVER_PROTOCOL"] HTTP/1.1
_SERVER["REQUEST_METHOD"] GET
_SERVER["QUERY_STRING"] dojo.preventCache=1367519066445
_SERVER["REQUEST_URI"] /ZendServer/Information/Phpinfo?dojo.preventCache=1367519066445
_SERVER["SCRIPT_NAME"] /ZendServer/index.php
_SERVER["DOCUMENT_URI"] /ZendServer/index.php
_SERVER["RULE_FILE"] conf/httpd.conf
_SERVER["PHP_SELF"] /ZendServer/index.php
_SERVER["REQUEST_TIME"] 1367519066
EDIT
SOLUTION
解決方案是將用戶配置文件更改爲使用CCSID 37,並將服務器作業更改爲使用CCSID 37.我們將進行手動更改,以便在作業重新啓動時不會恢復。
呃......我想一步一步接近。 (參見OP的編輯)我們將用戶配置文件改爲37而不是* SYSVAL,現在我們取回字符串(7)「?與實際人物更接近......任何想法? - - 先謝謝你! – adam 2013-05-02 14:56:30
你期望看到什麼值? SELECT語句只有2列,但變量是'string(7)'和'string(8)'。你能顯示正在返回的十六進制值嗎? – 2013-05-02 15:04:04
我期望看到來自OP的「Regular」和「Markdown」。 *或者至少是普通的英文字母:)* ...在示例中我確實有不同的標題,而不是我的實時代碼,對不起。我做了編輯以顯示正在使用的正確標題。答案是短的一個字符是奇怪的。正在重複的兩個十六進制值是「d98587a4938199」和「d48199928496a695」。刪除重複以避免混淆。 – adam 2013-05-02 15:42:11