Q:
測(cè)試機(jī)進(jìn)行socket交互時(shí),可以正常返回信息;在生產(chǎn)機(jī)和本地pc機(jī)上交互時(shí),總會(huì)超時(shí)。 A: 測(cè)試機(jī)的編碼是ISO-8859-1,本地pc機(jī)和生產(chǎn)機(jī)的編碼都是GBK,數(shù)據(jù)交互是用byte進(jìn)行傳輸?shù)?,最后四位進(jìn)行字符轉(zhuǎn)換時(shí)總是亂碼 修改前是用PrintOutStream.println(String),傳輸?shù)椒?wù)器的,因?yàn)閭魅氲膮?shù)后四位轉(zhuǎn)碼時(shí)只能操作系統(tǒng)的環(huán)境編碼有關(guān)系,所以 在GBK環(huán)境無(wú)論怎么轉(zhuǎn)碼都不能成功。 修改后用OutputStream out = Socket.getOutputStream();取得輸出流,再用out.write(byte[])的方法把byte數(shù)組傳到服務(wù)器 用InputStream in = Socket.getInputStream(); 取得輸入流,用in.read(byte[],int,int)的方法讀取服務(wù)器返回的數(shù)據(jù),執(zhí)行完read后 byte數(shù)組存放的就是服務(wù)器返回的數(shù)據(jù)字符 Anyway: 在進(jìn)行socket調(diào)試接口時(shí),盡量采用用byte[]傳輸數(shù)據(jù)的方式。 |
|