Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Xử lý chuỗi CKEditor thành tiếng Việt không dấu.

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    22

    Mặc định Xử lý chuỗi CKEditor thành tiếng Việt không dấu.

    Kính gởi các anh em trong congdongcviet.com.

    Mình đang dùng CKEditor 3.6.1 để soạn thảo nội dung bài viết trong website.

    Theo mình biết thì CKEditor lưu nội dung vào CSDL theo tiêu chuẩn iso-8859-1.
    Ví dụ:
    Code:
    Xin chào các bạn.
    sau khi đưa vào CKEditor sẽ có dạng:
    Code:
    <p>
    	Xin ch&agrave;o c&aacute;c bạn.</p>
    Mình muốn xử lý nội dung của CKEditor theo hướng loại bỏ tất cả các ký tự HTML và văn bản sẽ trở thành tiếng Việt không dấu để tiện tìm kiếm sau này.

    Theo đó văn bản trên sẽ trở thành

    Code:
    Xin chao cac ban.
    Mình đã tham khảo trên mạng và tìm được cách chuyển từ UTF-8 sang tiếng Việt không dấu. Nhưng từ
    iso-8859-1 sang tiếng Việt không dấu thì mình chưa tìm được cách chuyển.

    Mong nhận được sự giúp đỡ của các bạn.
    Chân thành cảm ơn.

  2. #2
    Ngày gia nhập
    06 2011
    Bài viết
    93

    Bạn cần phải làm 3 việc như sau:
    1. Xóa bõ thẽ.
    2. Decode cái chuỗi đó từ HTML Text sang chuỗi thường.
    3. Khữ dấu.

    Visual C# Code:
    1. public string Decode(string htmlText)
    2.         {
    3.             string strText = Regex.Replace(htmlText, "<.*?>", string.Empty);
    4.             strText = HttpUtility.HtmlDecode(strText);
    5.             strText = RemoveUnicode(strText);
    6.             return strText;
    7.         }
    8.  
    9.         public string RemoveUnicode(string inputText)
    10.         {
    11.             string stFormD = inputText.Normalize(System.Text.NormalizationForm.FormD);
    12.             System.Text.StringBuilder sb = new System.Text.StringBuilder();
    13.             string str = "";
    14.             for (int i = 0; i <= stFormD.Length - 1; i++)
    15.             {
    16.                 UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[i]);
    17.                 if (uc == UnicodeCategory.NonSpacingMark == false)
    18.                 {
    19.                     if (stFormD[i] == 'đ')
    20.                         str = "d";
    21.                     else if (stFormD[i] == 'Đ')
    22.                         str = "D";
    23.                     else
    24.                         str = stFormD[i].ToString();
    25.                     sb.Append(str);
    26.                 }
    27.             }
    28.             return sb.ToString();
    29.         }

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    22

    Xin thật lòng cảm ơn bạn FlyingFox.
    Nhờ code này của bạn mình đã giải quyết được một vấn đề cả tuần này mình làm chưa được.

    Mình nhờ bạn giúp thêm một tý nữa được không?

    Vấn đề là mình muốn tất cả văn bản sau khi chuyển thành tiếng Việt không dấu thì sẽ liền nhau. Những khoảng xuống hàng sẽ được nối với nhau để tiết kiệm không gian cho CSDL.

  4. #4
    Ngày gia nhập
    06 2011
    Bài viết
    93

    Thì bạn chỉ cần replace bằng empty string là được rồi.

    Visual C# Code:
    1. public string RemoveUnicode(string inputText)
    2.         {
    3.             string stFormD = inputText.Normalize(System.Text.NormalizationForm.FormD);
    4.             System.Text.StringBuilder sb = new System.Text.StringBuilder();
    5.             string str = "";
    6.             for (int i = 0; i <= stFormD.Length - 1; i++)
    7.             {
    8.                 UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[i]);
    9.                 if (uc == UnicodeCategory.NonSpacingMark == false)
    10.                 {
    11.                     if (stFormD[i] == 'đ')
    12.                         str = "d";
    13.                     else if (stFormD[i] == 'Đ')
    14.                         str = "D";
    15.                     else if (stFormD[i] == '\r' | stFormD[i] == '\n')
    16.                         str = "";
    17.                     else
    18.                         str = stFormD[i].ToString();
    19.                     sb.Append(str);
    20.                 }
    21.             }
    22.             return sb.ToString();
    23.         }

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    22

    Chân thành cảm ơn bạn FlyingFox một lần nữa.
    Mình có thêm được một tý mã nữa để loại bỏ ký tự [tab] bằng cách thêm stFormD[i] == '\t'.
    Chúc bạn nhiều sức khỏe và thành công trong cuộc sống.

    Code:
    public string RemoveUnicode(string inputText)
        {
            string stFormD = inputText.Normalize(System.Text.NormalizationForm.FormD);
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            string str = "";
            for (int i = 0; i <= stFormD.Length - 1; i++)
            {
                UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[i]);
                if (uc == UnicodeCategory.NonSpacingMark == false)
                {
                    if (stFormD[i] == 'đ')
                        str = "d";
                    else if (stFormD[i] == 'Đ')
                        str = "D";
                    else if (stFormD[i] == '\r' | stFormD[i] == '\n' | stFormD[i] == '\t')
                        str = "";
                    else
                        str = stFormD[i].ToString();
                    sb.Append(str);
                }
            }
            return sb.ToString();
        }

Các đề tài tương tự

  1. Thay đổi menu chuột phải của ckeditor (vùng soạn văn bản)
    Gửi bởi ldthao56 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 08-10-2013, 04:11 AM
  2. Tìm chuỗi pattern không liên tiếp có trong chuỗi str cho trước ?
    Gửi bởi kimchinh_no1 trong diễn đàn Nhập môn lập trình Java
    Trả lời: 2
    Bài viết cuối: 23-07-2012, 01:58 PM
  3. Tìm chuỗi con gồm các số giống nhau liên tiếp dài nhất của một chuỗi cho trước
    Gửi bởi dailammoc trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 8
    Bài viết cuối: 07-02-2012, 09:03 PM
  4. Chuyển chuỗi tiếng việt sang chuỗi số và ngược lại
    Gửi bởi saonam trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 18-06-2011, 07:28 AM
  5. Có cách nào kiểm tra một chuỗi trong textbox có phải chuỗi tiếng Việt có dấu ko?
    Gửi bởi bachhaiduong trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 26-04-2010, 07:52 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn