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

Đề tài: Hướng dẫn cách đọc FileName dạng Unicode (16-bit)

  1. #1
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Lightbulb Hướng dẫn cách đọc FileName dạng Unicode (16-bit)

    Hôm nay Dũng Còi hỏi một câu:

    - Làm thế nào để mở một file mà tên của nó ở dạng Unicode hả anh? Ví dụ: Dũng_Còi.txt

    - Trả lời:

    Trường hợp này không thể sử dụng kiểu char 8-bit thông thường, vì là có kèm kí tự Unicode mở rộng nên ta cần sử dụng tới kiểu kí tự mở rộng wchar_t (16 bit Unicode)

    Với khai báo kiểu wchar_t thì các chuỗi thông thường phải xác định bởi chữ L ở trước.
    Ví dụ:
    C++ Code:
    1. wchar_t* filename = L"Dũng_Còi.txt";

    Nếu bạn viết là:
    C++ Code:
    1. wchar_t* filename = "Dũng_Còi.txt";

    lập tức sẽ bị lỗi vì phép gán không tương xứng, không thể ép kiểu từ 8-bit char lên 16-bit wchar_t.

    Code sau đây demo cách đọc tên file dạng Unicode như nói ở trên:

    C++ Code:
    1. /*
    2.  * @author Xcross87
    3.  * @date 03-May-2009
    4.  * @file openfile.cpp
    5.  * @note
    6.  *        open file name which is Unicode
    7.  */
    8.  
    9. /* prototype */
    10. #include <stdio.h>
    11.  
    12. /* declare: function */
    13. int OpenFile(wchar_t*, wchar_t*);
    14. int OpenFileEx(wchar_t*, wchar_t*);
    15.  
    16. /* entry point */
    17. int main(void)
    18. {
    19.     // file name in unicode
    20.     wchar_t* fname = L"DũngCòi.txt";
    21.     // open
    22.     if(OpenFileEx(fname, L"r"))
    23.         printf("OK \n");
    24.     else
    25.         printf("Error \n");    
    26.  
    27.     // return
    28.     return 0;
    29. }
    30.  
    31. // @function    OpenFile()
    32. // @type    int
    33. // @param    
    34. //      wchar_t*    _iFileName        file name in 16-bit Unicode
    35. //      wchar_t*    _mode            file mode
    36. // @return
    37. //        0    if fail
    38. //        1    if success
    39. int OpenFile(wchar_t *_iFileName, wchar_t *_mode)
    40. {
    41.     FILE* __stream;
    42.     __stream = _wfopen(_iFileName,_mode);
    43.     if(NULL == __stream) {
    44.         return 0;
    45.     }
    46.     fclose(__stream);
    47.     return 1;
    48. }
    49.  
    50.  
    51. // @function    OpenFileEx()
    52. // @type    int
    53. // @param    
    54. //      wchar_t*    _iFileName        file name in 16-bit Unicode
    55. //      wchar_t*    _mode            file mode
    56. // @return
    57. //        0    if fail
    58. //        1    if success
    59. int OpenFileEx(wchar_t* _iFileName, wchar_t* _mode)
    60. {
    61.     FILE* __stream;
    62.     int errno = _wfopen_s(&__stream, _iFileName, _mode);
    63.     if(0 != errno)
    64.         return 0;
    65.     fclose(__stream);
    66.     return 1;
    67. }

    Chúc vui vẻ! ^^~!
    None!

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Dũng còi mà hỏi vấn đề này thì hơi ngạc nhiên đó, hồi đó bên VBclub nhớ vấn đề này đã xử lý cụ thể rồi mà.

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    Nhà trọ
    Bài viết
    49

    Trích dẫn Nguyên bản được gửi bởi Ð.Khánh Xem bài viết
    Dũng còi mà hỏi vấn đề này thì hơi ngạc nhiên đó, hồi đó bên VBclub nhớ vấn đề này đã xử lý cụ thể rồi mà.
    Hồi bên VBClub hồi đó em dùng .Net (Sau khi hỏi thì em cũng tự xử được phần đó )

    Còn giờ em hỏi trên C truyền thống

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

  1. Làm thế nào để chuyển đổi Unicode tổ hợp sang Unicode dựng sẳn dùng std::codecvt?
    Gửi bởi doicanhden trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 2
    Bài viết cuối: 02-08-2013, 10:27 AM
  2. Lập trình C Đọc và ghi mã unicode vào tập tin
    Gửi bởi linh062 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 12-04-2013, 03:20 AM
  3. C++ : Convert TCVN3 to Unicode và ngược lại Unicode to TCVN3
    Gửi bởi langman trong diễn đàn Tutorials và Thủ thuật Visual C++
    Trả lời: 0
    Bài viết cuối: 24-01-2013, 10:06 PM
  4. Kỹ thuật C Cách liệt kê các tập tin có filename ở dạng unicode trong một folder???
    Gửi bởi nhoemnhieu251288 trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 1
    Bài viết cuối: 01-12-2011, 04:28 PM
  5. Lập trình C| Liệt kê nội dung file dùng system("cat FileName")
    Gửi bởi developer trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 04-06-2009, 01:06 PM

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