О закодированных предложениях между python и C ++ - PullRequest
3 голосов
/ 05 мая 2020

Я использую python3 .8 и C ++, G ++ для C ++. Если я напишу китайскую (в Unicode) строку в программе C ++, она покажет мне неправильную строку, когда я запускаю программу, например:

#include <iostream>
using namespace std;

int main()
{
    cout << "你好" << endl;
    return 0;
}

Но запустите ее:

D:\Desktop>g++ test.cpp -o test

D:\Desktop>test.exe
浣犲ソ

Хотя, возможно, вы не понимаете китайский язык, вы можете видеть, что это не строка, которую я хочу.

Если я изменил кодировку на «gbk», эта проблема была решена, но при запуске вылезла другая проблема python:

print("你好")

результат:

File "test.py", line 1
SyntaxError: Non-UTF-8 code starting with '\xc4' in file test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Кстати, это часть моего vimr c (конфигурация Gvim) в кодировке:

set fileencodings=utf-8,gbk,ucs-bom,utf-16,utf-32,gbk,big5,gb18030,latin1,gb2312
set encoding=gbk
set termencoding=gb2312
set fileencoding=gbk
" This will make Python be errored
set fileencodings=utf-8,gbk,ucs-bom,utf-16,utf-32,gbk,big5,gb18030,latin1,gb2312
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
" This will make C++ string wrong

Как мне найти закодированную строку C ++ и Python, которые могут быть правильными? Я использую Gvim для редактирования кода на C ++ и Python в Windows, спасибо за вашу помощь!

...