2

The program is pretty simple, it helped me get all the ascii codes since my computer doesn't seem to follow the standards in the interwebs. The problem I'm finding is that the outputs on the file and on the cmd differ. I need to use the box characters for a project that prints a file and on the screen and the file output doesn´t have them apparently.

#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
#include <clocale>

FILE* ascii;

void main()
{
    ascii = fopen("D://temp//ascii.txt", "w");

    setlocale(LC_ALL, "Portuguese_Portugal.850");
    int columns = 0, i;
    printf("\nTable ASCII - C%cdigos 32 a 127 \n\n", 162);
    fprintf(ascii, "\nTable ASCII - C%cdigos 32 a 127 \n\n", 162);
    for(i=32; i<=127; i++)
    {
        printf("%3d-%c   ", i ,i);
        fprintf(ascii, "%3d-%c   ", i, i);
        columns++;
        if(columns==8)
        {
            columns = 0;
            printf("\n");
            fprintf(ascii, "\n");
        }
    }
    printf("\n\n\n");
    printf("\nTable ASCII - C%cdigos 128 a 255\n\n", 162);
    fprintf(ascii, "\n\n\n");
    fprintf(ascii, "\nTable ASCII - C%cdigos 128 a 255\n\n", 162);
    for (i = 128; i <= 255; i++)
    {
        printf("%3d-%c  ", i, i);
        fprintf(ascii, "%3d-%c   ", i, i);
        columns++;
        if (columns == 8)
        {
            columns = 0;
            printf("\n");
            fprintf(ascii, "\n");
        }
    }
    printf("\n\n\n");
    fclose(ascii);
    system("pause");
}

Screen output:

Table ASCII - Códigos 32 a 127

 32-     33-!    34-"    35-#    36-$    37-%    38-&    39-'
 40-(    41-)    42-*    43-+    44-,    45--    46-.    47-/
 48-0    49-1    50-2    51-3    52-4    53-5    54-6    55-7
 56-8    57-9    58-:    59-;    60-<    61-=    62->    63-?
 64-@    65-A    66-B    67-C    68-D    69-E    70-F    71-G
 72-H    73-I    74-J    75-K    76-L    77-M    78-N    79-O
 80-P    81-Q    82-R    83-S    84-T    85-U    86-V    87-W
 88-X    89-Y    90-Z    91-[    92-\    93-]    94-^    95-_
 96-`    97-a    98-b    99-c   100-d   101-e   102-f   103-g
104-h   105-i   106-j   107-k   108-l   109-m   110-n   111-o
112-p   113-q   114-r   115-s   116-t   117-u   118-v   119-w
120-x   121-y   122-z   123-{   124-|   125-}   126-~   127-




Table ASCII - Códigos 128 a 255

128-Ç  129-ü  130-é  131-â  132-ä  133-à  134-å  135-ç
136-ê  137-ë  138-è  139-ï  140-î  141-ì  142-Ä  143-Å
144-É  145-æ  146-Æ  147-ô  148-ö  149-ò  150-û  151-ù
152-ÿ  153-Ö  154-Ü  155-ø  156-£  157-Ø  158-×  159-ƒ
160-á  161-í  162-ó  163-ú  164-ñ  165-Ñ  166-ª  167-º
168-¿  169-®  170-¬  171-½  172-¼  173-¡  174-«  175-»
176-░  177-▒  178-▓  179-│  180-┤  181-Á  182-Â  183-À
184-©  185-╣  186-║  187-╗  188-╝  189-¢  190-¥  191-┐
192-└  193-┴  194-┬  195-├  196-─  197-┼  198-ã  199-Ã
200-╚  201-╔  202-╩  203-╦  204-╠  205-═  206-╬  207-¤
208-ð  209-Ð  210-Ê  211-Ë  212-È  213-ı  214-Í  215-Î
216-Ï  217-┘  218-┌  219-█  220-▄  221-¦  222-Ì  223-▀
224-Ó  225-ß  226-Ô  227-Ò  228-õ  229-Õ  230-µ  231-þ
232-Þ  233-Ú  234-Û  235-Ù  236-ý  237-Ý  238-¯  239-´
240-­  241-±  242-‗  243-¾  244-¶  245-§  246-÷  247-¸
248-°  249-¨  250-·  251-¹  252-³  253-²  254-■  255- 



Press any key to continue . . .

File output:

Table ASCII - C¢digos 32 a 127 ã 

 32-     33-!    34-"    35-#    36-$    37-%    38-&    39-'   
 40-(    41-)    42-*    43-+    44-,    45--    46-.    47-/   
 48-0    49-1    50-2    51-3    52-4    53-5    54-6    55-7   
 56-8    57-9    58-:    59-;    60-<    61-=    62->    63-?   
 64-@    65-A    66-B    67-C    68-D    69-E    70-F    71-G   
 72-H    73-I    74-J    75-K    76-L    77-M    78-N    79-O   
 80-P    81-Q    82-R    83-S    84-T    85-U    86-V    87-W   
 88-X    89-Y    90-Z    91-[    92-\    93-]    94-^    95-_   
 96-`    97-a    98-b    99-c   100-d   101-e   102-f   103-g   
104-h   105-i   106-j   107-k   108-l   109-m   110-n   111-o   
112-p   113-q   114-r   115-s   116-t   117-u   118-v   119-w   
120-x   121-y   122-z   123-{   124-|   125-}   126-~   127-   




Table ASCII - C¢digos 128 a 255

128-€   129-   130-‚   131-ƒ   132-„   133-…   134-†   135-‡   
136-ˆ   137-‰   138-Š   139-‹   140-Œ   141-   142-Ž   143-   
144-   145-‘   146-’   147-“   148-”   149-•   150-–   151-—   
152-˜   153-™   154-š   155-›   156-œ   157-   158-ž   159-Ÿ   
160-    161-¡   162-¢   163-£   164-¤   165-¥   166-¦   167-§   
168-¨   169-©   170-ª   171-«   172-¬   173-­   174-®   175-¯   
176-°   177-±   178-²   179-³   180-´   181-µ   182-¶   183-·   
184-¸   185-¹   186-º   187-»   188-¼   189-½   190-¾   191-¿   
192-À   193-Á   194-Â   195-Ã   196-Ä   197-Å   198-Æ   199-Ç   
200-È   201-É   202-Ê   203-Ë   204-Ì   205-Í   206-Î   207-Ï   
208-Ð   209-Ñ   210-Ò   211-Ó   212-Ô   213-Õ   214-Ö   215-×   
216-Ø   217-Ù   218-Ú   219-Û   220-Ü   221-Ý   222-Þ   223-ß   
224-à   225-á   226-â   227-ã   228-ä   229-å   230-æ   231-ç   
232-è   233-é   234-ê   235-ë   236-ì   237-í   238-î   239-ï   
240-ð   241-ñ   242-ò   243-ó   244-ô   245-õ   246-ö   247-÷   
248-ø   249-ù   250-ú   251-û   252-ü   253-ý   254-þ   255-ÿ   
Bernasss12
  • 29
  • 2
  • 6
    The program (text editor?) you used to look at the file does not know that it contains text encoded in code page 850. That's a very common accident. Looks like it guessed at [code page 1252](https://en.wikipedia.org/wiki/Windows-1252#Code_page_layout) so it was probably a Windows text editor. Writing text files in utf8 with a BOM is highly recommended to avoid such lossage. – Hans Passant Jan 12 '17 at 13:12
  • welcome to the dark pit of encodings – Peter Miehle Jan 12 '17 at 13:26
  • @HansPassant, if it always expecting to be UTF-8, BOM is not needed. – 0andriy Jan 12 '17 at 13:28
  • Should be a bit obvious that this text editor did *not* expect utf-8. It was not a *nix editor. – Hans Passant Jan 12 '17 at 13:40
  • If you are on unix/linux: try `cat yourfile` in the terminal, if your are on Windows try `type yourfile` in the a cmd window and see what output you get. – Jabberwocky Jan 12 '17 at 14:02
  • I got the screen output, what could i do to make notepad expect 850 codepage? @MichaelWalz – Bernasss12 Jan 12 '17 at 14:56
  • @Bernasss12 you can't. For example the `╠` character does simply not exist in the Windows [code page 1252](https://en.wikipedia.org/wiki/Windows-1252#Code_page_layout). The first comment is probably what you need. What are you _actually_ trying to do ? This might be a [XY Problem](http://xyproblem.info/). – Jabberwocky Jan 12 '17 at 16:38
  • You know you aren't using ASCII so please replace "Table ASCII" with "Table CP850". – Tom Blodget Jan 12 '17 at 17:52
  • This is a college project in which the program needs to reandomly assign a character to each day on a year, and have both screen and file output. As the functionallity itself is pretty easy so i tryed to make it look pretty using the character you showed. I thought it would be the same code page in both scenarios so now i have to change quite a few things. I showed the ascii program because the project itself doesnt have much to do with the problem and this is what i used to find the problem. Thanks for the help! @MichaelWalz – Bernasss12 Jan 12 '17 at 22:13

1 Answers1

1

with encoding you have to look into three aspects:

  • where does the input coming from? does it specify the encoding (explicitly or implicitly by specification)? can you trust this information? else you are lost and can cancel the project
  • what encoding is the process you are running on the machine is using? You have to make sure your program sticks to this encoding, end every input is transformed into this encoding.
  • which encoding do you output? make sure, the recipient knows, what he has to expect (as input)
Peter Miehle
  • 5,984
  • 2
  • 38
  • 55
  • 1
    There is some interplay between these. A console program likely uses a library that asks the console which encoding it is using for input and output and adapts processing accordingly. "Cancel the project" is a bit extreme but it would certainly be on hold if people don't agree to have effective communication and which encoding is used is essential. – Tom Blodget Jan 12 '17 at 17:47