PDA

View Full Version : راهنمایی در مورد مشکل با فارسی و UTF-8



فرهاد شفق
یک شنبه 16 مهر 1385, 12:21 عصر
اقا من یه برنامه نوشتم که از طریق سوکت یک سری اطلاعات می فرسته.
حالا اگه اطلاعات انگلیسی باشه مشکلی نیست
اما اگه فارسی بشه اصلا هیچی ارسال نمیشه کاش ارسال می شد و خراب بود ولی اصلا ارسال نمی شه
حالا من اومدم اطلاعات رو انکد کردم قبل ارسال به utf-8 اطلاعات ارسال میشه ولی فقط عدد
یعنی وقتی کلمه فارسی ارسال میشه تبدیل میشه به عدد ...
نمی دونم شاید روش انکودم مشکل داره اگه نه که نمی دونم کد هم ندارم بزارم
کمک کنید اصلا ببینید چیه

once4ever
یک شنبه 16 مهر 1385, 12:51 عصر
همون از انکد باید استفاده کنی. ولی احتمالا به بایت تبدیل کردی و اون عددها هم بایت هر حرف هستند. باید تبدیل کنی به رشته و بفرستی یا اینکه ازطرف گیرنده باید این بایتها رو به رشته تبدیل کنی

فرهاد شفق
یک شنبه 16 مهر 1385, 13:20 عصر
اون طرف کاری نمی تونم بکنم
همین طریف بجای بایت به رشته چزوری تبدیل کنیم؟

فرهاد شفق
یک شنبه 16 مهر 1385, 19:39 عصر
اقا رشته بگین دیگه

shockley
دوشنبه 17 مهر 1385, 02:34 صبح
با سلام
من هم همچین مشکلی دارم و می خوام اطلاعات رو به پورت سریال ارسال کنم اما وقتی فارسی تایپ می کنم علامت سوال می فرسته. تو VB 6 درست بود یعنی همونطور که شما گفتید به جای کاراکترهای فارسی یه کدی بین 127 تا 256 ارسال می کرد و من مشکلی نداشتم. حالا این چیزی که شما گفتید بعنی تبدیل به UTF-8 کار منو خیلی راه می اندازه ولی متاسفانه من تو C# تازه کارم و نتونستم این کارو بکنم اگر ممکنه کمک کنید.

این کد فرم اصلی برنامه است که یه دکمه داره که محتویات TextBox رو به COM ارسال میکنه.





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form


{
public Form1()
{
InitializeComponent();
}
private void Send_Click(object sender, EventArgs e)
{
serialPort1.Write(textBox1.Text+(Char)13);

;
}
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.Open();
}
}
}

فرهاد شفق
دوشنبه 17 مهر 1385, 13:16 عصر
من این رو تست کردم ولی جواب نداد !!!
برای من هیچی ارسال نمیشه کاش علامت ؟ ارسال می شد.

shockley
دوشنبه 17 مهر 1385, 13:34 عصر
کلاس Serialport تو فریم ورک 2 فقط ساپورت میشه.
آقا یکی کمک کنه لطفا، این یونیکد ما رو بیچاره کرد!!!
چطوری textbox رو utf-8 کنم؟

فرهاد شفق
دوشنبه 17 مهر 1385, 16:53 عصر
اقا گیرم جون مادرتون کمک کنید

فرهاد شفق
سه شنبه 18 مهر 1385, 13:56 عصر
فقط بلدین همدیگرو ضایع کنید ؟
خب جواب بدین

once4ever
سه شنبه 18 مهر 1385, 14:52 عصر
چطوری textbox رو utf-8 کنم؟
جواب شما هم همون کدی هست که نوشتم
:)

فرهاد شفق
سه شنبه 18 مهر 1385, 16:05 عصر
کار نمیکنه !!
مجبوری گیج کنی مردم رو؟

ARA
چهارشنبه 19 مهر 1385, 01:37 صبح
سلام
اگه اشتباه نکرده باشم مشکل سر فرستادن و دریافت کردن فارسی بصورت UTF-8
این کد ها رو نگاه کنین



//// in Clinet Side
private void btnSend_Click(object sender, EventArgs e)
{
byte[] recv = new byte[50];
try
{ Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(IPAddress.Parse("127.0.0.1"), 500);
int a = client.Receive(recv);
textBox1.Text = Encoding.UTF8.GetString(recv);
}
catch (SocketException err) { MessageBox.Show(err.Message); }
}
}
/// in Server Side
private void btnSend_Click(object sender, EventArgs e)
{
byte[] recv = new byte[0];
byte[] snd;
Socket sock,server;
try
{
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint IEP = new IPEndPoint(IPAddress.Any, 500);
server.Bind(IEP);
server.Listen(4);
sock = server.Accept();
snd = Encoding.UTF8.GetBytes(textBox1.Text);
int a = sock.Send(snd);
}
catch (SocketException err) { MessageBox.Show(err.Message); }
}

mohsenna30ri
شنبه 13 آبان 1385, 09:51 صبح
اگر بجای حروف فارسی علامت سوال می گذاره :
ببین این راه حل بدردت می خوره فکر کنم بد نباشد
http://barnamenevis.org/forum/showthread.php?t=55431