Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/106: Рейтинг темы: голосов - 106, средняя оценка - 4.85
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
1

Создание файла в UTF-8 кодировке

09.01.2012, 12:57. Показов 19445. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Как сделать что бы в данной ситуации файл создавался в utf-8

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    DWORD tmp0;
    TCHAR buffer[256];
    bool test;
    char s[MAX_PATH],s2[MAX_PATH];
 
    lstrcpy(s, "t.txt");
    
  
    HANDLE h = CreateFile(s,     
           GENERIC_WRITE,        
           FILE_SHARE_READ,       
           NULL,                 
           OPEN_ALWAYS,                    
           FILE_ATTRIBUTE_NORMAL, 
           NULL);                 
    
    
    if (h != INVALID_HANDLE_VALUE)
    {
          test = WriteFile(h, &buffer ,sizeof(buffer), &tmp0, NULL);
          if (test) 
             lstrcpy(s2, "Файл записался");
          else 
             lstrcpy(s2, "Файл не записался");
          MessageBox(hWnd,s,(CHAR*)buffer,NULL);
    }
    CloseHandle(h);
Добавлено через 11 часов 6 минут
Тема еще актуальна
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2012, 12:57
Ответы с готовыми решениями:

Чтение файла в кодировке utf-8 и вывод в консоль
Здорова! Пытаюсь прочитать файл в кодировке utf-8 (вот он ) и вывожу его в консоль, ничего не...

Записать в блокнот в кодировке UTF-8
Здравствуйте, как записывать и считывать строки в кодировке UTF-8 ?

Как записать файл в кодировке utf-8?
Вообщет задача такая, нужно файл записать в кодировке utf-8 или unicode и нужно чтобы русские...

Конвертация из ASCII в UTF-32 или UTF-8 в UTF-32
Собсно сабж.

31
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
09.01.2012, 13:43 2
попробуй записать в начало файла byte order mark
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <windows.h>
 
int main()
{
    DWORD tmp0;
    TCHAR buffer[256];
    lstrcpyA((LPSTR)buffer, "Buffer");
    CHAR BOM[3] = {(char)0xef, (char)0xbb, (char)0xbf};
    BOOL test;
    char s[MAX_PATH], s2[MAX_PATH];
 
    lstrcpyA((LPSTR)s, "1.txt");
 
    HANDLE h = CreateFileA(s,
           GENERIC_WRITE,
           FILE_SHARE_READ,
           NULL,
           OPEN_ALWAYS,
           FILE_ATTRIBUTE_NORMAL,
           NULL);
 
    if (h != INVALID_HANDLE_VALUE)
    {
        WriteFile(h, BOM , sizeof(BOM), &tmp0, NULL);
        test = WriteFile(h, buffer, strlen((char*)buffer), &tmp0, NULL);
        if (test)
         lstrcpyA((LPSTR)s2, "OK");
        else
         lstrcpyA((LPSTR)s2, "FAIL");
        MessageBoxA(NULL, s2,(CHAR*)buffer, 0);
    }
    CloseHandle(h);
    return 0;
}
2
Заблокирован
Автор FAQ
09.01.2012, 14:23 3
Цитата Сообщение от Helldrg Посмотреть сообщение
Здравствуйте! Как сделать что бы в данной ситуации файл создавался в utf-8
Кодировка файла
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
09.01.2012, 21:13  [ТС] 4
igorrr37 а как потом прочитать в utf-8?
0
Заблокирован
Автор FAQ
09.01.2012, 21:21 5
Цитата Сообщение от Helldrg Посмотреть сообщение
а как потом прочитать в utf-8?
Русский текст без танцев с бубнами

Не по теме:

Helldrg, зря мой код не смотрите...

1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
09.01.2012, 21:38  [ТС] 6
Не по теме:
Helldrg, зря мой код не смотрите...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
 
using namespace std;
 
void GenerateCSVTable();
 
int main(int argc, char *argv[])
{
    system("chcp 1251");
    std::cout << "Hello world ..."  << std::endl;
    GenerateCSVTable(); 
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
void GenerateCSVTable()
  {
       string lps;
        ifstream ifs("example.csv");
        getline(ifs,lps);
        ifs.close();
   
        long uLen = MultiByteToWideChar(CP_UTF8,0, lps.c_str(),-1,NULL,NULL);
        WCHAR*lpw = new WCHAR[uLen];           
        MultiByteToWideChar(CP_UTF8,0,lps.c_str(),uLen,lpw,uLen);
        uLen  = WideCharToMultiByte(CP_ACP, 0, lpw,   -1,  NULL, NULL, NULL, NULL);
        char *str = new char[uLen];
        WideCharToMultiByte(CP_ACP, 0, lpw, uLen,  str , uLen, NULL, NULL);
        std::cout << str << std::endl;
  }
Неработает
0
-=ЮрА=-
09.01.2012, 21:43
  #7

Не по теме:

Цитата Сообщение от Helldrg Посмотреть сообщение
Неработает
- могу взглянуть на
Цитата Сообщение от Helldrg Посмотреть сообщение
"example.csv"
- вы уверенны что он в UTF-8 а не обычный бинарник к примеру...

1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
09.01.2012, 21:46  [ТС] 8
я почти на сто процентов уверен что он не в utf-8
0
Заблокирован
Автор FAQ
09.01.2012, 21:47 9
Helldrg, запишите ваш
Цитата Сообщение от Helldrg Посмотреть сообщение
example.csv
методом из поста №3 а затем прочтите его методом из поста №5. Перед чтением откройте в Word ваш файл и посмотрите что офис вам пишет о кодировке...
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
09.01.2012, 21:47  [ТС] 10
а как определить в какой он кодировке? (кстати походу он в utf 8)
0
Заблокирован
Автор FAQ
09.01.2012, 21:49 11
Цитата Сообщение от igorrr37 Посмотреть сообщение
WriteFile(h, buffer, strlen((char*)buffer), &tmp0, NULL);
- ну а для єтого ReadFile вам в помощь(как по мне там UTF-8 и не пахнет)
О ReadFile можете прочесть здесь http://vsokovikov.narod.ru/New... adfile.htm
на русском
и здесь http://www.google.com.ua/url?s... XB52ar53NQ на английском
Успехов!
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
09.01.2012, 21:53  [ТС] 12
Спасибо!
Еще один попутный вопрос как 3-тим постом записать файл из csv или xls?
0
Заблокирован
Автор FAQ
09.01.2012, 21:54 13
Цитата Сообщение от Helldrg Посмотреть сообщение
а как определить в какой он кодировке? (кстати походу он в utf 8)
- я же вам только что написал об этом
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Перед чтением откройте в Word ваш файл и посмотрите что офис вам пишет о кодировке...
- см скрины
Миниатюры
Создание файла в UTF-8 кодировке   Создание файла в UTF-8 кодировке   Создание файла в UTF-8 кодировке  

0
Заблокирован
Автор FAQ
09.01.2012, 22:00 14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
же вам только что написал об этом
- сори я не заметил что вы разобрались

Добавлено через 4 минуты
Цитата Сообщение от Helldrg Посмотреть сообщение
Еще один попутный вопрос как 3-тим постом записать файл из csv или xls?
- неее тут по ODBC коннекту к БД лучше всего делать, хотя думаю с csv можно помутить, а вот xls сложный формат(это binary compaund file) кроме ODBC я с ним через IStorage работать научился, но не на 100% конечно. Вам в раздел БД, хотя для вас сейчас поищу у себя что нибудь попроще в своём загашнике
1
Заблокирован
Автор FAQ
09.01.2012, 22:06 15
Итак вот одна из моих реализаций записи в xls на мой взгляд более менее интересная и не очень сложная для понимания
Вложения
Тип файла: rar WriteXLS_project.rar (21.6 Кб, 48 просмотров)
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
09.01.2012, 22:08  [ТС] 16
Кстати программа которая в третьем посту у меня ошибку выдает когда русская буква появляется
0
Заблокирован
Автор FAQ
09.01.2012, 22:14 17
Цитата Сообщение от Helldrg Посмотреть сообщение
Кстати программа которая в третьем посту у меня ошибку выдает когда русская буква появляется
- я посмотрю, чуть позже(писал тогда на скорую руку, возможно что-о упустил). Вы именно с моим 1 к 1-му кодом работаете???

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Вы именно с моим 1 к 1-му кодом работаете???
- если что то добавили, дайте взглянуть на код

0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
09.01.2012, 22:21  [ТС] 18
Вот:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
 
using namespace std;
 
void Gen1();
 
int main(int argc, char *argv[])
{
    //system("chcp 1251"); я с ним и без него пробывал
    std::cout << "Hello world ..."  << std::endl;
    Gen1(); 
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
void Gen1()
  {
   char str[32];
   LPWSTR  lpszW = L"Hello dsdв\n";
   long uLen = WideCharToMultiByte(CP_UTF8, 0, lpszW,   -1,  NULL, NULL, NULL, NULL);
   WideCharToMultiByte(CP_UTF8, 0, lpszW, uLen,  str , uLen, NULL, NULL);
   ofstream ofs("UTF-8.txt");
   ofs<<str;
   ofs.close();
  }
Добавлено через 28 секунд
ошибку пишет в этой строке

C++
1
long uLen = WideCharToMultiByte(CP_UTF8, 0, lpszW,   -1,  NULL, NULL, NULL, NULL);
Добавлено через 58 секунд
[Warning] passing NULL used for non-pointer converting 6 of `int WideCharToMultiByte(UINT, DWORD, const WCHAR*, int, CHAR*, int, const CHAR*, BOOL*)'
0
Заблокирован
Автор FAQ
09.01.2012, 22:23 19
Цитата Сообщение от Helldrg Посмотреть сообщение
ошибку пишет в этой строке
- среда разработки - 10-ка???
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
09.01.2012, 22:26  [ТС] 20
Dev c++ 4.9
0
09.01.2012, 22:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2012, 22:26
Помогаю со студенческими работами здесь

Считывание из файла в нужной кодировке
Почему при считывание файла выдает кракозябры ? Содержимое файла: char *text; ifstream...

Прочитать из файла числа в 16-ичной кодировке
Добрый вечер! Подскажите пожалуйста. У меня в файле записана следующая строка b6589fc6abdc8ac. Я её...

Считывание части строк из файла в кодировке CP866
Доброго времени суток! Пытаюсь считать из текстового файла в кодировке CP866 текст длинной...

Считать utf-8 из файла
Доброго времени суток. Задача следующая. Есть текстовый файл - словарь в utf-8 кодировке. Слова...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru