PDA

View Full Version : تبدیل code-page



titbasoft
شنبه 10 اردیبهشت 1384, 11:21 صبح
چطور میشه یک string با code-page ی 1252 (لاتین) رو به 1256 (عربی) تبدیل کرد :گیج:

r_habib_zadeh
یک شنبه 04 اسفند 1387, 17:27 عصر
با سلام.
در رابطه با Codepage من هم سوالی داشتم. برنامه ای در VB.Net دارم که روی چند کامپیوتر نصب شده و کار میکنه اما اخیرا روی یک کامپیوتر جدید نصب کردم و اتفاق جالبس افتاد. اطلاعات ورودی رو در موقع نمایش بصورت ؟ نشان میده یعنی اگر بنویسید یک وقتی برمیگرده ؟؟ نوشته میشه. پرسیدم گفتن از همخوان نبودن کد پیج هست شما چی می گید. در ضمن من از SqlServer 2000 استفاده می کنم

anooshiran
یک شنبه 04 اسفند 1387, 18:03 عصر
با سلام.
در رابطه با Codepage من هم سوالی داشتم. برنامه ای در VB.Net دارم که روی چند کامپیوتر نصب شده و کار میکنه اما اخیرا روی یک کامپیوتر جدید نصب کردم و اتفاق جالبس افتاد. اطلاعات ورودی رو در موقع نمایش بصورت ؟ نشان میده یعنی اگر بنویسید یک وقتی برمیگرده ؟؟ نوشته میشه. پرسیدم گفتن از همخوان نبودن کد پیج هست شما چی می گید. در ضمن من از SqlServer 2000 استفاده می کنم

سلا دوست عزيز

اگر فيلد هايي كه در طراحي table براي متغيرهاي string را انتخاب كرده اي به nvarchar تبديل كني مشكل ناهمخواني كد پيج ها براي رشته اي فارسي از بين ميرود.

anooshiran
یک شنبه 04 اسفند 1387, 20:49 عصر
چطور میشه یک string با code-page ی 1252 (لاتین) رو به 1256 (عربی) تبدیل کرد :گیج:

سلام دوست عزيز

امكان تبديل مستقيم يك string به Unicode ديگري در . net امكان پذير نيست.براي اين كار بايد ابتدا string را به byte تبديل كرد و آنگاه byte ها را encode نمود.

براي اين تبديل بايد از System.Text.Encoding.Convert استفاده نماييد.

البته لازم به توضيح است كه microsoft اينگونه تبديل را توصيه نمي كند زيرا امكان از دست رفتن اصل اطلاعات مي باشد.

به هر حال چند خط كد برايتان ميگذارم ، البته تست كنيد و احتمالا با كمي تغييرات به نتيجه مي رسد.



Dim Data As String
Data = "Barnameh Nevis"
Dim Encoded = EncodingString(Data, "windows-1256")





Function EncodingString(ByRef IncomingData As String, ByRef CharacterSet As String) As Byte()
Dim eSourceData As Byte() = System.Text.Encoding.Unicode.GetBytes(IncomingData )
Dim dstEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding(CharacterSet)
Return System.Text.Encoding.Convert(System.Text.Encoding. Unicode, dstEncoding, eSourceData)
End Function


در هر حال اميدوارم كه اين كدها به دردتان بخورد.

mostafaaa
یک شنبه 04 اسفند 1387, 21:05 عصر
چطور میشه یک string با code-page ی 1252 (لاتین) رو به 1256 (عربی) تبدیل کرد :گیج:
سلام دوست من
شاید این بتونه کمکتون کنه
http://www.codeproject.com/KB/files/CodePage_File_Converter.aspx