Wpis z mikrobloga

#programowanie #cpp #qt #linux
Mój program tworzy plik tekstowy pod Windows, ale używam go pod Linux. Działa dopiero wtedy jeżeli ręcznie usunę wszystkie spacje i wpiszę je sam, z klawiatury. Jako spacji używam po prostu " ", co zrobić żeby tak się nie działo?
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@fervi: no właśnie dziwne, ale tak. Ale jako znak końca linii używam po prostu \n więc tam nie ma co źle pójść... dokładnie chodzi o plik ~/.profile gdzie mam coś takiego:

if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
/opt/MyApp/bin/MyApp
fi

Musiałem jeszcze raz napisać spacje w pierwszej linii... inaczej wyskakiwał błąd, że "niespodziewane użycie fi".
  • Odpowiedz
@s_theCapt: obstawiam dziwaczne kodowanie pod windowsem. Najlepiej używać UTF-8, ale microsoft jeszcze do tego nie dojrzał (w linuxie ciężko spotkać cokolwiek innego niż UTF-8 lub gołe ASCII). Zobacz ten wygenerowany plik jakimś viewerem do hex'ów, np WinHex (pod windowsem) lub xxd pod linuxem. Dowiesz się dokładnie, jakie tam idą znaki.
  • Odpowiedz
@s_theCapt: zdebilały windows kończy linie symbolami CRLF, na Linuxie koniec linii to sam symbol LF, git np. sam podmienia te symbole jeżeli używasz tego samego repo na różnych systemach, a tak to musisz jakiś skrypt napisać co będzie poprawiał po windowsie zakończenia linii.
  • Odpowiedz
Najlepiej używać UTF-8, ale microsoft jeszcze do tego nie dojrzał (w linuxie ciężko spotkać cokolwiek innego niż UTF-8 lub gołe ASCII).


@dict: Jak to są polskie instalacje gdzieś z początku stulecia (~2001 do ~2008) to zdarzało się że domyślnie dystrybucje stosowały ISO 8859-2 (co i tak lepsze było od stron kodowych używanych w DOS/Windows) lub poradniki w necie kierowały na zmianę na ISO 8859-2.
  • Odpowiedz
@Kryspin013: ale to mój program musiał robić. Było UTF-8. Ale był też tryb text który włączyłem bez czytania, a robił tę podmianę \n na \n\r czy coś... wystarczyło się nazwą nie sugerować i wyłączyć. xd (to co pisałem wcześniej o ręcznym enterze to jednak nieprawda się okazało :D)
  • Odpowiedz