Difficulty loading proper characters from a .txt file

I'm creating a small text based game and I would like to make level creation easier by simply being able to type the characters used to build the level into a notepad.txt file. When I have my program load the text from the file though I get different character codes then what I used in the text file. For example:

This is the zone01.txt file data:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
≈≈≈≈                /X(     )\  /≈≈≈≈≈
 __≈___             \(       )│/X≈≈≈≈≈
/XX░XXX\             │(/\ /\)//X≈≈≈≈≈≈
│  ░≈≈≈X│      __   /♠♠ / \  XX≈≈≈≈≈≈≈
│ ≈≈≈≈≈≈│     /XX\_/X♠♠♠♠║♠♠♠♠♠♠♠♠≈≈≈≈
│  ≈≈≈≈≈\____/XX▲XXX♠♠ ♠♠║♠♠♠ ♠♠♠ ≈≈≈≈
 \    ╗♠♠XXXXXX ║♠♠♠♠  ♠♠║♠♠  ♠♠ ≈≈≈≈≈
  \__♠╚╗♠♠♠  ♠♠♠║♠♠♠♠ ♠♠♠║   ♠♠ ≈≈≈≈≈≈
     │♠╚═╦══════╩════════╣♠♠♠♠ ≈≈≈≈≈≈≈
     │♠♠♠║♠ ♠♠♠♠♠♠♠♠♠♠♠♠♠║♠♠♠♠♠ ≈≈≈≈≈≈
    /♠♠  ║♠    ♠♠♠♠ ♠♠♠♠♠║♠♠♠   ≈≈≈≈≈≈
___/♠♠♠♠♠║♠♠♠♠♠♠♠♠♠ ♠♠♠♠♠║♠♠♠♠ ≈≈≈≈≈≈≈
XXXX  ♠♠♠║ ♠♠♠♠♠╔════════╝   ♠ ≈≈≈≈≈≈≈
═══╦═════╩══════╝♠♠♠  ♠♠♠♠♠♠♠ ≈≈≈≈≈≈≈≈
 ♠ ║ ♠♠♠♠♠♠♠♠♠♠♠♠♠♠         ≈≈≈≈≈≈≈≈≈≈
┌──╨─┐♠♠♠♠♠♠♠♠♠♠♠♠     ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
│TOWN│♠♠♠♠♠♠♠♠♠ ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
└────┘♠♠ ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
♠♠♠♠♠♠♠ ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
♠♠♠♠♠♠≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈


here is the main.cpp file:

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
#include <iostream>
#include <string>
#include <fstream>

int main()
{
	std::string fileName = "zone01.txt";
	std::string strData = "";
	int x = 0;

	std::ifstream zoneFile(fileName);

	while(!zoneFile.eof())
	{
		strData = "";
		strData = zoneFile.get();
		std::cout << strData;
		if(x == 38)
		{
			std::cout << std::endl;
			x = 0;
		}
		x++;
	}
	
	return 0;
}


and this is what displays:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

≈≈≈≈                /X(
)\  /ΓëêΓëêΓëêΓëêΓëê
 __Γëê___
     \(       )Γöé/XΓëêΓëêΓëêΓëêΓëê
/X
XΓûæXXX\             Γöé(/\ /\)//XΓëêΓ
ëêΓëêΓëêΓëêΓëê
Γöé  ΓûæΓëêΓëêΓëêXΓöé
    __   /ΓÖáΓÖá / \  XXΓëêΓëêΓëêΓëêΓë
êΓëêΓëê
Γöé ΓëêΓëêΓëêΓëêΓëêΓëêΓöé
/XX\_/XΓÖáΓÖáΓÖáΓÖáΓòæΓÖáΓÖáΓÖáΓÖáΓÖáΓ
ÖáΓÖáΓÖáΓëêΓëêΓëêΓëê
Γöé  ΓëêΓëêΓëêΓëê
Γëê\____/XXΓûXXXΓÖáΓÖá ΓÖáΓÖáΓòæΓÖáΓÖ
áΓÖá ΓÖáΓÖáΓÖá ΓëêΓëêΓëêΓëê
 \    ΓòùΓ
ÖáΓÖáXXXXXX ΓòæΓÖáΓÖáΓÖáΓÖá  ΓÖáΓÖáΓòæ
ΓÖáΓÖá  ΓÖáΓÖá ΓëêΓëêΓëêΓëêΓëê
  \__ΓÖ
áΓòÜΓòùΓÖáΓÖáΓÖá  ΓÖáΓÖáΓÖáΓòæΓÖáΓÖáΓÖ
áΓÖá ΓÖáΓÖáΓÖáΓòæ   ΓÖáΓÖá ΓëêΓëêΓëêΓë
êΓëêΓëê
     ΓöéΓÖáΓòÜΓòÉΓòªΓòÉΓòÉΓòÉΓ
òÉΓòÉΓòÉΓò⌐ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòú
ΓÖáΓÖáΓÖáΓÖá ΓëêΓëêΓëêΓëêΓëêΓëêΓëê

  ΓöéΓÖáΓÖáΓÖáΓòæΓÖá ΓÖáΓÖáΓÖáΓÖáΓÖáΓÖ
áΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓòæΓÖáΓÖáΓÖáΓÖáΓ
Öá ΓëêΓëêΓëêΓëêΓëêΓëê
    /ΓÖáΓÖá  Γòæ
ΓÖá    ΓÖáΓÖáΓÖáΓÖá ΓÖáΓÖáΓÖáΓÖáΓÖáΓòæ
ΓÖáΓÖáΓÖá   ΓëêΓëêΓëêΓëêΓëêΓëê
___/ΓÖá
ΓÖáΓÖáΓÖáΓÖáΓòæΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖ
áΓÖá ΓÖáΓÖáΓÖáΓÖáΓÖáΓòæΓÖáΓÖáΓÖáΓÖá Γë
êΓëêΓëêΓëêΓëêΓëêΓëê
XXXX  ΓÖáΓÖáΓÖáΓòæ
 ΓÖáΓÖáΓÖáΓÖáΓÖáΓòöΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓ
òÉΓòÉΓò¥   ΓÖá ΓëêΓëêΓëêΓëêΓëêΓëêΓëê
Γ
òÉΓòÉΓòÉΓòªΓòÉΓòÉΓòÉΓòÉΓòÉΓò⌐ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉΓò¥ΓÖáΓÖáΓÖá  ΓÖáΓÖáΓÖáΓÖáΓÖá
ΓÖáΓÖá ΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëê
 ΓÖá Γ
òæ ΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖ
áΓÖáΓÖá         ΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓ
ëêΓëêΓëê
ΓöîΓöÇΓöÇΓò¿ΓöÇΓöÉΓÖáΓÖáΓÖáΓÖ
áΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖá     ΓëêΓëêΓë
êΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëê

ΓöéTOWNΓöéΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖáΓÖá
ΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓë
êΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëê
ΓööΓöÇΓöÇ
ΓöÇΓöÇΓöÿΓÖáΓÖá ΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓ
ëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëê
ΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëê
ΓÖáΓÖáΓÖáΓ
ÖáΓÖáΓÖáΓÖá ΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓë
êΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓ
ëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëê
ΓÖáΓÖáΓÖáΓÖ
áΓÖáΓÖáΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓ
ëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëê
ΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëêΓëê

 Press any key to continue . . .


as you can see, the normal characters such as 'X', '\', 'TOWN' display correctly but the other characters do not. Im assuming it has something to do with the way the character codes are encoded. I have the zone01.txt file saved with UTF-8 encoding. Any help to be able to load and display the proper characters from the .txt file would be great. Thanks!

When the file is saved with Unicode encoding instead of UTF-8, the program displays this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 ■H"H"H"H"                                / X (           ) \     / H"H"H"H"H"
   _ _ H"_ _ _                           \ (               ) ☻%/ X H"H"H"H"H"
 / X X æ%X X X \                           ☻%( / \   / \ ) / / X H"H"H"H"H"H"
 ☻%    æ%H"H"H"X ☻%            _ _       / `&`&  /   \     X X H"H"H"H"H"H"H"
 ☻%  H"H"H"H"H"H"☻%          / X X \ _ / X `&`&`&`&Q%`&`&`&`&`&`&`&`&H"H"H"H"
 ☻%    H"H"H"H"H"\ _ _ _ _ / X X ▓%X X X `&`&  `&`&Q%`&`&`&  `&`&`&  H"H"H"H"
   \         W%`&`&X X X X X X   Q%`&`&`&`&    `&`&Q%`&`&    `&`&  H"H"H"H"H"
     \ _ _ `&Z%W%`&`&`&    `&`&`&Q%`&`&`&`&  `&`&`&Q%      `&`&  H"H"H"H"H"H"
           ☻%`&Z%P%f%P%P%P%P%P%P%i%P%P%P%P%P%P%P%P%c%`&`&`&`&  H"H"H"H"H"H"H"
           ☻%`&`&`&Q%`&  `&`&`&`&`&`&`&`&`&`&`&`&`&Q%`&`&`&`&`&  H"H"H"H"H"H"
         / `&`&    Q%`&        `&`&`&`&  `&`&`&`&`&Q%`&`&`&      H"H"H"H"H"H"
 _ _ _ / `&`&`&`&`&Q%`&`&`&`&`&`&`&`&`&  `&`&`&`&`&Q%`&`&`&`&  H"H"H"H"H"H"H"
 X X X X     `&`&`&Q%  `&`&`&`&`&T%P%P%P%P%P%P%P%P%]%      `&  H"H"H"H"H"H"H"
 P%P%P%f%P%P%P%P%P%i%P%P%P%P%P%P%]%`&`&`&    `&`&`&`&`&`&`&  H"H"H"H"H"H"H"H"
   `&  Q%  `&`&`&`&`&`&`&`&`&`&`&`&`&`&                  H"H"H"H"H"H"H"H"H"H"
 ♀% % %h% %►%`&`&`&`&`&`&`&`&`&`&`&`&          H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"
 ☻%T O W N ☻%`&`&`&`&`&`&`&`&`&  H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"
 ¶% % % % %↑%`&`&  H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"
 `&`&`&`&`&`&`&  H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"
 `&`&`&`&`&`&H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"

 Ω ô♥δ  Press any key to continue . . .


Conversion from Unicode to Ascii is what Im looking for I think. If anywhone knows how please let me know.
Um, you can't. The point of Unicode is to support more characters than ASCII.
You should take a look at wifstream and wcout.
Edit: or maybe not. getline always fails for me when using wifstream/wcout/wstring.
This however works fine and prints the file correctly (tested in gnome-terminal, xterm and Konsole):

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
  ifstream file("/home/david/zone01.txt");
  if (!file.is_open())return 1;

  string line;
  while (getline(file,line))cout << line << endl;
}
Last edited on
I cut and pasted it into Code::Blocks and I got a strange error. std::ifstream wouldn't accept 'fileName' for the file name. After I replaced 'fileName' with "zone01.txt", it almost worked fine. When I ran it from Code::Blocks it went into an endless loop of '0's, but when I ran it from the console it worked. I used gedit for the text editor to save 'zone01.txt'.
Topic archived. No new replies allowed.