Итак, каждый читатель здесь должен иметь четкое представление о фактах, ситуации.
Мое прагматическое заключение шокирует просто: все, что C ++ (и STL) «кодирование символов» существенно нарушено и бесполезно. Виноват это в Microsoft или нет, это все равно не поможет.
Мое решение, после глубокого расследования, много разочарования и последующего опыта заключается в следующем:
typedef std::string UTF8String
) typedef std::wstring UCS2String
) - это компромисс , и концессию на беспорядок, введенный WIN32 API). UCS-2 является достаточным для большинства из нас (подробнее об этом позже ...). UCS2String ConvertToUCS2( const UTF8String &str );
UTF8String ConvertToUTF8( const UCS2String &str );
Преобразования просты, Google должен помочь здесь ...
Вот и все. Используйте UTF8String везде, где важна память, и для всех входов / выходов UTF-8. Используйте UCS2String везде, где строка должна анализироваться и / или обрабатываться. Вы можете конвертировать между этими двумя представлениями в любое время.
Альтернативы & amp; Улучшения
const wchar_t tt_iso88951[256] = {0,1,2,...};
и соответствующий код для преобразования в & amp; из UCS2. typedef std::basic_string UCS2String
) ICU или другие библиотеки Unicode?
Просто поместите свой второй вызов в первую функцию успеха.
Примечание: код ниже использует $.post()
вместо $.ajax()
, но результат тот же.
$('form').submit(function(event) {
event.preventDefault()
const name = $('#name').val()
const email= $('#email').val()
const file = $('#file').val()
const submit = $('#submit').val()
$.post('test.php', {
name: name,
email: email,
file: file,
submit: submit
}, function(data) {
alert(data)
$(".form_mess").load('test.php', {
name: name,
email: email,
file: file,
submit: submit
})
})
})