Nine MVP's Blog

21/08/2006

ผมต้องการแปลง code utf8 ให้เป็นภาษาไทยทำไงครับ

Filed under: Computers and Internet — Nine MVP @ 12:14 am

ผมต้องการแปลง code utf8 ให้เป็นภาษาไทยทำไงครับ

เช่น
มันมีรหัส
0x0e2a0x0e270x0e310x0e2a0x0e140x0e140x0e350x0e040x0e230x0e310x0e1a0x0e0a0x0e320x0e270x0e420x0e250x0e01
 
มันแปลว่าอะไรครับ
ช่วย convert ให้หน่อยได้ไหมครับ
 
ของ โปรแกรม code ด้วยก็ดีนะครับ
ขอบคุณมากครับ
 
 
 
ตอบ :
 
ผมลองเขียนมาให้ มี 2 Function ทำงานร่วมกันครับ
 
1. เอาไว้แบ่งอักษรที่เป็น 0xXXXXX ออกจากกันก่อน เพื่อจะได้ Convert ได้
อันนี้ไว้ spilt ด้วยชุด String ปกติ C# 1.0 จะไม่มี 
 

private string[] SplitString(string testString, string split)

{

    int offset = 0;

    int index = 0;

    int[] offsets = new int[testString.Length + 1];

    while (index < testString.Length)

    {

        int indexOf = testString.IndexOf(split, index);

        if (indexOf != -1)

        {

            offsets[offset++] = indexOf;

            index = (indexOf + split.Length);

        }

        else

        {

            index = testString.Length;

        }

    }

    string[] final = new string[offset + 1];

    if (offset == 0)

    {

        final[0] = testString;

    }

    else

    {

        offset–;

        final[0] = testString.Substring(0, offsets[0]);

        for (int i = 0; i < offset; i++)

        {

            final[i + 1] = testString.Substring(offsets[i] + split.Length, offsets[i + 1] – offsets[i] – split.Length);

        }

        final[offset + 1] = testString.Substring(offsets[offset] + split.Length);

    }

    return final;

}

 
 
2. เอาไว้ Convert UTF charecter ใน Array ที่ได้จากการ Split แล้ว
 

private string getStringFromUTF8(string[] str)

{

    string strResult = "";

    for (int i = 0; i < str.Length – 1; i++)

    {

        if ((str[i].Length > 0) && (str[i] != string.Empty) && (str[i] != null))

        {

            int utfcode = Convert.ToInt32("0x" + str[i].ToString(), 16);

            strResult += (string)char.ConvertFromUtf32(utfcode);

        }

    }

    return strResult;

} 

 
 
 
 
 
How To Use:
 

//ข้อมูลจากตัวอย่างที่ให้มา

string str = "0x0e2a0x0e270x0e310x0e2a0x0e140x0e140x0e350x0e040x0e230x0e310x0e1a0x0e0a0x0e320x0e270x0e420x0e250x0e01";

 
//ตัวแปรที่ต้องใช้รับค่า

string[] aStr;

string decodeStr;

// ทำการแบ่งชุดข้อความด้วย "0x " เพราะเป็น Prefix ที่แน่นอน เช่น 0x0e2a ก็จะได้ 0e2a

aStr = SplitString(str.Trim(), "0x");

//จากนั้นก็ทำการ pass array ที่ได้เข้า Function getStringFromUTF8() ก็จะได้ string ทั้งหมดกลับออกมา

decodeStr = getStringFromUTF8(aStr);

 

MessageBox.Show(decodeStr);

 
***************************************************************************
 
จาก
0x0e2a0x0e270x0e310x0e2a0x0e140x0e140x0e350x0e040x0e230x0e310x0e1a0x0e0a0x0e320x0e270x0e420x0e250x0e01
ผลลัพธ์ที่ได้คือ
สวัสดีชาวโล
 

1 Comment »

  1. แจ่มครับ

    Comment by jued — 21/08/2006 @ 1:12 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: