LB Booster
General >> General Board >> Need help with ... Save as ANSI
http://lbb.conforums.com/index.cgi?board=general&action=display&num=1484567394

Need help with ... Save as ANSI
Post by SarmedNafi on Jan 16th, 2017, 10:49am

I have a one line text file. (English text)

The problem is it generated as Unicode I want it ANSI to be useful on WinPC the generator is a program from Apple (Mac).

Can LBB help?

If I use Note Pad by save as then chose ANSI from the combo at the bottom it became fine for WinPC, it accept it.

How can I do that with code? I hope LBB can do that, help Please.

Regards,
Sarmed
Re: Need help with ... Save as ANSI
Post by tsh73 on Jan 16th, 2017, 11:11am

Hello Sarmed

This link
http://stackoverflow.com/questions/700187/unicode-utf-ascii-ansi-format-differences
says that there are no single "unicode", but 4 different ones.
Also, there is no "ANSI".

So you better make it clear first.

As for simple approach -
Does your text supposed to contain letters with codes >128?
Here's my test file - second line is non-Latin (Cyrillic actually)
Code:
Hello there
Привет 

saved in Notepad as "Unicode".

Running this snippet
Code:
open "testUnicode.txt" for input as #1
a$=input$(#1, lof(#1))
close #1
for i =1 to len(a$)
    c$=mid$(a$,i,1)
    print i, asc(c$),
        if asc(c$)>31 then print c$ else print
next
 

gives me, text starts with two marker bytes
then normal Latin goes as pair(single Latin letter - 0 code)
so "Hello there" clearly readable
Codes 13 and 10 correrspond to CR LF pair - new line separator (might be different on MAC)
later is non-Latin code, unreadable.
Code:
1             255           я
2             254           ю
3             72            H
4             0
5             101           e
6             0
7             108           l
8             0
9             108           l
10            0
11            111           o
12            0
13            32
14            0
15            116           t
16            0
17            104           h
18            0
19            101           e
20            0
21            114           r
22            0
23            101           e
24            0
25            13
26            0
27            10
28            0
29            31
30            4
31            64            @
32            4
33            56            8
34            4
35            50            2
36            4
37            53            5
38            4
39            66            B
40            4
 


If it will be in your case, you can just keep every other letter and have ordinary ASCII text.

Code:
a$=mid$(a$,3)   'strip 2 marker bytes
for i =1 to len(a$) step 2  'every second one
    c$=mid$(a$,i,1)
    print i, asc(c$),
        if asc(c$)>31 then print c$ else print
next
 

Re: Need help with ... Save as ANSI
Post by SarmedNafi on Jan 16th, 2017, 11:21am

Hi Anatoly,

Thank you for responding. The text is English, Absolutely English the PC don't respond to it, because of the reason which I mentioned to it.

And it is readable in both cases, No problem with that.
Regards,
Re: Need help with ... Save as ANSI
Post by tsh73 on Jan 16th, 2017, 11:29am

Also, last function (Reply#9) from this LB thread
http://libertybasic.conforums.com/index.cgi?board=LB3&action=display&num=1246653111
works for me.
Re: Need help with ... Save as ANSI
Post by SarmedNafi on Jan 16th, 2017, 11:52am

Thank you Anatoly,

The conversion succeeded.

The one line text file became ANSI and accepted by WinPC.

All the best,
Sarmed
Re: Need help with ... Save as ANSI
Post by Richard Russell on Jan 16th, 2017, 5:47pm

on Jan 16th, 2017, 11:11am, tsh73 wrote:
This link ... says that there are no single "unicode", but 4 different ones.

There's only one 'Unicode' (the whole point is that it's 'universal') but there are different encodings. However, as far as LBB is concerned (and the web, and email, and most other places), there is only one encoding that really matters: UTF-8.

If you are unsure about the 'universality' of UTF-8 then you might find this document enlightening.

To answer the OP's question yes, you can use LBB's program editor to convert between ANSI and UTF-8 or vice-versa (assuming there are no non-ANSI characters in the text of course). In the Options menu select the mode corresponding to the source file (Unicode or non-Unicode) then load or paste the source text into the editor. Change the setting in the Options menu and save the text to a new file. Job done!

Richard.

P.S. The thread at the LB Community Forum to which you linked reveals a chasm of misunderstanding about what Unicode and ANSI are. It's disappointing that something so important is so poorly understood.

Re: Need help with ... Save as ANSI
Post by tsh73 on Jan 16th, 2017, 6:55pm

Thanks for entertaining reading.
(from the text) It really looks like coding in Windows and avoiding UTF-16 is akin to pissing against the wind.
Also
Quote:
FAQ
1. Q: Are you a linuxer? Is this a concealed religious fight against Windows?

Number one question. They did suspect something wink
'Nuff said.
Re: Need help with ... Save as ANSI
Post by Richard Russell on Jan 16th, 2017, 8:17pm

on Jan 16th, 2017, 6:55pm, tsh73 wrote:
It really looks like coding in Windows and avoiding UTF-16 is akin to pissing against the wind.

But how often do you (or anybody) actually use UTF-16 when coding for Windows? I'm willing to bet that actually you use UCS-2, i.e. you assume that every character can be represented as 16-bits (two bytes).

That is the problem with UTF-16; it's neither one thing nor the other. It doesn't have the advantage of UTF-32 (every character can be represented by the same-size code) or of UTF-8 (an efficient byte-stream identical to ANSI when only ASCII characters are used). UTF-16 has the disadvantages of both!

Anyway, UTF-8 has long since won the race. It's the only Unicode encoding used on the web. It's the only Unicode encoding used in emails. It's the encoding used in SDL2 and it's the Unicode encoding used by LBB.

Richard.

Re: Need help with ... Save as ANSI
Post by SarmedNafi on Jan 17th, 2017, 09:38am

Thank you Richard for interact,

Quote:
To answer the OP's question yes, you can use LBB's program editor to convert between ANSI and UTF-8 or vice-versa


Unfortunately this way did not help (I know this way), it must be done by coding, the code open the file read it convert it then saving as a new file. At last attach the new file to a program built in WinPC to Run.

All this done by one LBB exe. I finished do the job with the help of first post of Anatoly, by adding
Code:
...   ...   ...
...   ...   ...

d$ = d$ + c$
next

    open "Speak2.txt" for output as #2
        #2 d$
        close #2
        'speak the number
        c$ = "Speak2.txt" 
                'print c$
        b$ = "cscript.exe speak.vbs "; c$
        run b$, hide
End

 


The response of Anatoly was just in time, I thank him very much.
And I thank Richard very much for one file LBB exe.

Unfortunately about half an hoer from now, I will be off line for a month or so.

Regards,
Sarmed

Re: Need help with ... Save as ANSI
Post by SarmedNafi on Jan 17th, 2017, 09:45am

> Change the setting in the Options menu and save the text to a new file.

I was asked you to put a code which we can use it to control the check box via code. You refused, or you don't replay for that request.

Regards,
Sarmed
Re: Need help with ... Save as ANSI
Post by Richard Russell on Jan 17th, 2017, 11:43am

on Jan 17th, 2017, 09:45am, SarmedNafi wrote:
I asked you to put a code which we can use it to control the check box via code. You refused, or you don't replay for that request.

I refer you to the Directives section of the Help file:
I do not think it is very fair to claim that I "refused" your request, when on the contrary the very feature you asked for was added in a subsequent release of LBB.

Richard.