在C#和MySQL中存取中文字符时避免乱码的方法
程序员文章站
2024-03-31 15:56:34
当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码。
由于中文字符采用双字节表...
当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码。
由于中文字符采用双字节表示,所以对含有中文的字符串的处理一定要按unicode编码方式进行处理,也就是说,使用socket发送中文字串时要事先将字串转成unicode格式的。
下面是简单的socket通信的代码。
//服务端代码
try { ipaddress myip = ipaddress.parse(“127.0.0.1″); tcplistener mylistener = new tcplistener(myip, convert.toint16(“1235″)); mylistener.start(); socket mysocket = mylistener.acceptsocket(); byte[] mydata = new byte[256]; mysocket.receive(mydata); this.richtextbox1.appendtext(system.text.encoding.unicode.getstring(mydata)); unicodeencoding myinfo = new unicodeencoding(); mysocket.send(myinfo.getbytes(“from server:你好!我是服务器”)); } catch (exception ex) { messagebox.show(ex.message,“信息提示”,messageboxbuttons.ok,messageboxicon.information); }
//客户端代码
try { tcpclient myclient = new tcpclient(); myclient.connect(“127.0.0.1″, convert.toint16(“1235″)); stream mystream = myclient.getstream(); unicodeencoding myinfo = new unicodeencoding(); byte[] mydata = new byte[256]; byte[] mysendbyte = myinfo.getbytes(“from client:你好!我是客户端”); mystream.write(mysendbyte, 0, mysendbyte.length); mystream.read(mydata, 0, 256); this.richtextbox1.appendtext(system.text.encoding.unicode.getstring(mydata)); } catch(exception ex) { messagebox.show(ex.message,“信息提示”,messageboxbuttons.ok,messageboxicon.information); }
此外,数据库中中文的存取也是一件令人头疼的事,其实要解决这个问题很简单,下面是一段sql server的代码:
try { sqlconnection myconnect = new sqlconnection(m_connectionstrings); //插入新纪录 string mysql = string.format(“insert into [bsm_systemserviceinfotable] values ({0},n'{1}',n'{2}',n'{3}',n'{4}')”,agentid, data[1], data[2], data[3], data[0]); mycommand = new sqlcommand(mysql, myconnect); mycommand.connection.open(); mycommand.executenonquery(); mycommand.connection.close(); } catch (system.exception e) { messagebox.show(e.tostring ()); }
可以看到,sql脚本命令中,所有的字符串参数前多了一个字符“n”,这个字符即声明用unicode方式编码,当然,要注意的就是,若字段的值可能含有中文时,必须将该字段类型声明为nchar、nvarchar、ntext,这里的n表示的意思是一样的。
推荐阅读
-
在C#和MySQL中存取中文字符时避免乱码的方法
-
在C#和MySQL中存取中文字符时避免乱码的方法
-
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
-
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
-
在C#和MySQL中存取中文字符时避免乱码的方法_MySQL
-
在C#和MySQL中存取中文字符时避免乱码的方法_MySQL
-
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法_PHP
-
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法_PHP
-
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法_PHP教程
-
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法_php技巧