Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Zmiana nazw plików (tworzenie pliku) polskie znaki.

Ostatnio zmodyfikowano 2015-01-11 23:21
Autor Wiadomość
SocrateZ
» 2015-01-05 14:31:16
Poza tym to będzie trochę ciężko napisać.
Nie wiem co ty tu w tym trudnego widzisz.
P-124201
Krump
Temat założony przez niniejszego użytkownika
» 2015-01-05 15:58:17
Kiepska znajomość C, kiepska obślugę C++ ze względu na obsługę pliku i systemu, co za tym idzie operacje na char to nie moja bajka. Wole na stringach są bardziej intuicyjne (mają wiele przydatnych opcji w klasie). Jak nie ma innego sposobu to się namęczę, dużo czasu zmarnuję, ale podszkolę się w tym i to napiszę, ale jak da się tego uniknąć. Mam prace, studia i spore obowiązki domowe, więc staram sie jak najbardziej sobie ułatwić.
P-124213
Krump
Temat założony przez niniejszego użytkownika
» 2015-01-06 18:06:29
To jak, ktoś zna inną metodę?
P-124336
Monika90
» 2015-01-06 21:02:33
Jeżeli się nie mylę, to w Linuksie UTF-8 po prostu działa.

Potwierdzam. Właśnie to sprawdziłem.
Tylko że te funkcje windowsowskie do niczego się nie przydadzą.
U mnie te funkcje działają. To znaczy w Windows, a w Linuksie sam napisałeś, że nie są potrzebne. Czyli w Windows można konwertować z UTF-8 do CP-1250 za pomocą MultiByteToWideChar/WideCharToMultiByte, a w Linuksie zostawić UTF-8 bez zmian.
P-124351
SocrateZ
» 2015-01-06 23:06:30
Czyli w Windows można konwertować z UTF-8 do CP-1250 za pomocą MultiByteToWideChar/WideCharToMultiByte, a w Linuksie zostawić UTF-8 bez zmian.

Owszem. Problem w tym że wczytując plik fgetc napotkałem na problem funkcji rename, która zmieniała nazwę na szlaczki (stąd powyższe funkcje add_utf8_to_ansi_string). Funkcja MultiByteToWideChar za dużo dać nie może, bo konwertuje do LPWSTR (wchar_t), a funkcja rename przyjmuje tablicę znaków char. Być może problem rozwiązałoby wczytywanie pliku funkcją fgetwc i użycie funkcji WideCharToMultiByte, ale zapewnić tego nie mogę.
P-124361
Monika90
» 2015-01-06 23:38:38
Chodziło mi o konwersję w dwóch etapach
MultiByteToWideChar(CP_UTF8, ...);
WideCharToMultiByte(CP_ACP, ...);

P-124364
SocrateZ
» 2015-01-07 07:17:06
Na to bym nie wpadł. Też można. :)
P-124370
Krump
Temat założony przez niniejszego użytkownika
» 2015-01-09 23:10:44
Wykorzystałem te informacje i okazało się, ze problem nie jest w tym jednak. Problemem jest funkcja rename(), a co gorsza ogólnie tworzenie plików przez mój program na windowsie. nawet jak na sztywno wpisze rename ( test.txt, "Ą" ) to wywala błąd
P-124542
1 2 3 « 4 » 5
Poprzednia strona Strona 4 z 5 Następna strona