- Defining the character set of a data file
- Defining the character set used by a data file
- Notes and limitations
- Example: Creating a data file in Hebrew
- Changing the character set of a data file
- Modifying the character set used for the searches and for the sorts
- Finding out the character set of a data file
- How to proceed?
- Example: Changing the fonts according to the character set of the data file read
Managing specific character sets in HFSQL data files
Available only with these kinds of connection
When an application is used to display or save data in HFSQL files, this data is entered in the current language.
No specific management is required if the application is used in a country that is using a Latin character set.
If the application is used in a country that is using a specific character set, this character set must also be supported by the data files. Therefore, most of the operations (searches, sorts, ...) will be performed according to the selected character set.
Remark: From version 19, HFSQL is the new name of HyperFileSQL.
Defining the character set of a data file
Defining the character set used by a data file
To define the character set used by a data file:
- Define the character set with ChangeCharset.
- Create the data file with HCreation (or HCreationIfNotFound). In these functions, use the hChangeCharset constant to take into account the character set specified by ChangeCharset.
All the functions used to perform sorts and searches will use the specific features of the selected character set.
Notes and limitations
- The size of string items specified in the analysis is expressed in bytes and not in characters. Depending on the character set used, you may have to increase the item size (if the characters used are coded on 2 bytes for example).
- The character set of the data file must always be identical to the character set specified by ChangeCharset. Otherwise, when accessing a string index (string, character, date, time):
- Reading and seeking a record: no error will be displayed. However, the data read will not correspond to the expected data.
- Modifying a record (addition, modification, deletion of a record or crossed record): a WLanguage error will be displayed.
- No query with joins can be performed on text items that use different character sets.
- The sort order in the HFSQL indexes does not take the "doubles letters" into account (CH in Spanish or LJ in Croatian for example).
- In HFSQL Client/Server, only the sort order of the following languages is supported: French, Arabic, Chinese, Korean, Estonian, Greek, Hebrew, Japanese, Polish, Russian, Thai, Turkish and Vietnamese.
Example: Creating a data file in Hebrew
// Language used in the application: Hebrew
// Change the character set
// Create the data file
// and take the change of character set into account
HCreation(Azaa, "", "", "", hChangeCharset)
// Enter a record
Azaa.toto = "ñéâëðéçìòëðâëêðéò"
Changing the character set of a data file
In some cases, you may want to change the character set of a data file without re-creating this file. For example:
- a data file was translated.
- a data file is filled when installing an application with the data corresponding to the setup language.
Modifying the character set used for the searches and for the sorts
To modify the character set used for the searches and for the sorts:
- Specify the character set to use with ChangeCharset.
- Re-index the data file with HIndex. Use the hChangeCharset constant to take into account the character set specified by ChangeCharset.
Finding out the character set of a data file
How to proceed?
To find out the character set used by a data file, call ..Charset
on the requested HFSQL data file.
Example: Changing the fonts according to the character set of the data file read
FileLanguage is int = Customer..Charset
// Changes the character set according to the data file format
CASE charsetArabic: ChangeCharset(charsetArabic)
CASE charsetDefault: ChangeCharset(charsetDefault)
CASE charsetGreek: ChangeCharset(charsetGreek)
CASE charsetHebrew: ChangeCharset(charsetHebrew)
CASE charsetOccidental: ChangeCharset(charsetOccidental)
CASE charsetRussian: ChangeCharset(charsetRussian)
CASE charsetTurkish: ChangeCharset(charsetTurkish)
// Switch to western character set
This page is also available for…