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

Đề tài: Lỗi unicode

  1. #1
    Ngày gia nhập
    05 2021
    Bài viết
    2

    Mặc định Lỗi unicode

    Sao mình gán ss ="Á" mà xuất ra nó lại thành 'Ã' vậy các bạn

    Code:
    string ss = "Á";
    MessageBox(NULL, L"ss = " + ss, L"title", MB_OK);
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		loi uni.jpg
Lần xem:	5
Size:		13.4 KB
ID:		73510

  2. #2
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    997

    Trích dẫn Nguyên bản được gửi bởi colombo Xem bài viết
    Sao mình gán ss ="Á" mà xuất ra nó lại thành 'Ã' vậy các bạn

    Code:
    string ss = "Á";
    MessageBox(NULL, L"ss = " + ss, L"title", MB_OK);
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		loi uni.jpg
Lần xem:	5
Size:		13.4 KB
ID:		73510
    Tôi không biết bạn dùng string của thư viện nào (#include <vector> \n using std::string; hay cái gì khác của C) mà TBD không báo lỗi chứ nói gì tới xuất ra cái thông báo.

    . Nếu có cấu hình UNICODE cho dự án và #include<vector> \n using std::wstring; thì cái chuỗi phải khai báo và khổi tạo như : wstring ss = L"Á";
    . Nếu không cấu hình hoặc không khai báo #define UNICODE#include<vector> \n using std::wstring; thì wstring ss = L"Á";MessageBoxW(NULL, L"ss = " + ss, L"title", MB_OK);

    Tuy vậy cái L"ss = " + ss cũng sẽ bị gác lại với vài TBD khó tính

    Tốt hơn nên:
    C++ Code:
    1. #define UNICODE
    2. #include <windows.h>
    3. #include <vector>
    4. using std::wstring;
    5. int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
    6. {
    7.     wstring ss = L"Á";
    8.     wstring text = L"ss = " + ss;
    9.     MessageBox(NULL, text.c_str(), L"title", MB_OK);
    10.     return 0;
    11. }
    Đã được chỉnh sửa lần cuối bởi MHoang : 31-05-2021 lúc 07:16 PM. Lý do: Thêm mã mô tả

  3. #3
    Ngày gia nhập
    05 2021
    Bài viết
    2

    Do mình lưu file .cpp là UTF8, file .h vẫn là ANSI nên bị lỗi, cảm ơn bạn rất nhiều

  4. #4
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    997

    Nếu bạn vẫn quyết tâm không quan tâm tới có cấu hình Unicode hay không thì

    C++ Code:
    1. #include <windows.h>
    2. #include <string>
    3. using std::wstring;
    4. int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
    5. {
    6.     wstring ss = L"Á";
    7.     wstring text = L"ss = " + ss;
    8.     MessageBoxW(NULL, text.c_str(), L"title", MB_OK);
    9.     return 0;
    10. }

    Nếu bạn là tín đồ lập trình Windows thì

    C++ Code:
    1. #include <windows.h>
    2. int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
    3. {
    4.     LPCWSTR     pss = L"Á";
    5.     WCHAR       ptext[32];
    6.     wsprintfW(ptext, L"ss = %s", pss);
    7.     MessageBoxW(NULL, ptext, L"title", MB_OK);
    8.     return 0;
    9. }

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