ホームページ データベース mysql チュートリアル 在C#和MySQL中存取中文字符时避免乱码的方法_MySQL

在C#和MySQL中存取中文字符时避免乱码的方法_MySQL

Jun 01, 2016 pm 01:00 PM
c# mysql

当用到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表示的意思是一样的。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C# を使用した Active Directory C# を使用した Active Directory Sep 03, 2024 pm 03:33 PM

C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# の乱数ジェネレーター C# の乱数ジェネレーター Sep 03, 2024 pm 03:34 PM

C# の乱数ジェネレーターのガイド。ここでは、乱数ジェネレーターの仕組み、擬似乱数の概念、安全な数値について説明します。

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

MySQL 8.4 (2024 年時点の最新の LTS リリース) で導入された主な変更の 1 つは、「MySQL Native Password」プラグインがデフォルトで有効ではなくなったことです。さらに、MySQL 9.0 ではこのプラグインが完全に削除されています。 この変更は PHP および他のアプリに影響します

C# データ グリッド ビュー C# データ グリッド ビュー Sep 03, 2024 pm 03:32 PM

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

C# のパターン C# のパターン Sep 03, 2024 pm 03:33 PM

C# のパターンのガイド。ここでは、C# のパターンの概要と上位 3 種類について、その例とコード実装とともに説明します。

C# の素数 C# の素数 Sep 03, 2024 pm 03:35 PM

C# の素数ガイド。ここでは、C# における素数の導入と例を、コードの実装とともに説明します。

C# での Web サービス C# での Web サービス Sep 03, 2024 pm 03:32 PM

C# での Web サービスのガイド。ここでは、C# での Web サービスの概要について、テクノロジの使用、制限、例を交えて説明します。

C# データテーブル フィルター C# データテーブル フィルター Sep 03, 2024 pm 03:33 PM

C# DataTable フィルターのガイド。ここでは、C# で DataTable をフィルター処理する方法について説明します。と例をそれぞれ示します。

See all articles