Stack Template

Introduction

The Rev/Linux IDE is generally geared towards the use of English, not other languages. If you want to use non-English text in button labels,
menus, etc., then see Rev's Unicode Lesson.

Since Linux uses UTF-8 encoding, that's what we are dealing with (not the UTF-16 form of Unicode).

Personally, I find the terms "uniencode" and "unidecode" confusing, and I prefer to avoid them in my coding. I have therefore substituted the
terms "readable" and "raw" (i.e. the opposite, unreadable). 

Here's an example of a "readable" string or chunk of data: Какязыкпрограммирования
(or at least it would be if I understood Russian!)
Here's an example of the same "raw" string or chunk of data: ÐšÐ°ÐºÑÐ·Ñ‹ÐºÐ¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ

You can put "readable" strings or chunks of data into variables, but the only way you can "read" (i.e. display, see) them is by putting them
into a data field using the unicodeText property:

e.g. set the unicodeText of field "display" to readableString

You cannot use "readable" strings or chunks of data to create or retrieve folder names or file names: they need to be in "raw" (i.e. unreadable) form.
(This applies to Latin as well as non-Latin strings or chunks.)

A Few Tips

1. You can paste Latin text into the IDE editor.
      But please note that this is NOT considered to be "readable" (even though it seems to be so), so it should be used with care.***
      The only truly "readable" UTF-8 text is what is stored in a data field's unicodeText property.

2. You can paste any language into a data field.

3. You can exchange readable UTF-8 data between data fields using the unicodeText property.

      e.g. set the unicodeText of field "display" to the unicodeText of field "russianText"

4. You can put Latin text inside a file without converting it to UTF-8.

      e.g. put "ÀÁÂÃÉÊÍÓÔÕÚÜàáâãéêíóôõúüÇ纪" into url ("file:" & rawFileName & ".txt")***

      And to retrieve it: put url ("file:" & rawFileName & ".txt") into field "display"

        *** But rather than quoting the content as a literal string like that (which has to be pasted into the IDE's text editor), it would be more guaranteed to paste it into a data field
               and then put field "portugueseText" into url ("file:" & rawFileName & ".txt")

5. This is how you save non-Latin UTF-8 content to a text file:
      
            put the unicodeText of line fromLineChosen to toLineChosen of field "contents" into readableFileContent      
            put makeRaw(readableFileContent) into url ("binfile:" & rawFileName & ".txt")

      The content needs to be in "raw" form, and it has to be saved in binary.

And this is how you retrieve it:

      put url ("binfile:" & rawFileName & ".txt") into rawFileContent
      set the unicodetext of line fromLineChosen to toLineChosen of field "contents" to makeReadable(rawFileContent)

      CAREFUL!!! 
      SAY: the unicodeText of line fromLineChosen to toLineChosen of field ....
      NOT: line fromLineChosen to toLineChosen of the unicodeText of field ....


You can also save/retrieve Latin text like this if you need to.


Here's an easier way of saving/retrieving text file content:

put the htmlText of field "contents" into url ("file:" & rawFileName & ".htm") 
set the htmlText of field "contents" to url ("file:" & rawFileName & ".htm")

FUNCTION SUMMARY (functions are in stack script)

"Readable"    = for use in fields (with unicodeText property)
"Raw"            = for use with the file system

---------------------------------------------------
function makeReadable rawString

Example USAGE:
 
 
 
                      OR:

put makeReadable(rawString) into readableString
set the unicodeText of field "display" to readableString

set the unicodeText of field "display" to makeReadable(rawString)

---------------------------------------------------
function makeRaw readableString

Example USAGE:
 
 

 
                      OR:
 
 
 
                      OR:

put the unicodeText of line 2 of field "theReadableFolderPaths" into readableString
put makeRaw(readableString) into rawString
create folder rawString

put makeRaw(the unicodeText of line 2 of field "theReadableFolderPaths") into rawString
create folder rawString

create folder (makeRaw(the unicodeText of line 2 of field "theReadableFolderPaths"))