Pages: 1
Print
Author Topic: XMetaL Developer: MCR-File with UTF-8 Encoding  (Read 109 times)
lerche
Member

Posts: 5


« on: May 21, 2018, 04:01:48 AM »

Hello,

In my XMetaL Developer project I have several JavaScript macros that are going to be bundled in an mcr-file. The default encoding format for this mcr-file is UTF-16 but I want have it in UTF-8, because my .js-Files have to be in UTF-8. Is it possible to configure the output encoding format?
Currently I have problems with letters like ä, ö, ü or ß. These letters are converted into cryptic characters.

My Question relates to the following system:

XMetaL(R) Author Enterprise 12.0.0.077
XMetaL(R) Developer Version 12.0.0.077
Visual Studio 2015 (Community Edition) Update 3
OS: Windows 10 Pro, English

Thank you for your help!

Kind regards,
René
Logged
tonys
JustSystems Partner
Member

Posts: 80


« Reply #1 on: May 21, 2018, 03:53:08 PM »

To change the encoding of an XML file:
  • open it in XMetaL
  • switch to plain text mode
  • edit the encoding="..." in the XML declaration
  • save the file

To change to UTF-8 you can just remove the encoding, since UTF-8 is the default.

When you open a .mcr file in XMetaL it will probably ask you to locate macros.dtd - this can be found in the Author/Rules folder.
Logged
Derek Read
Program Manager (XMetaL)
Administrator
Member

Posts: 2564



WWW
« Reply #2 on: May 25, 2018, 05:24:24 PM »

It looks like even when a .JS file is created in an XMetaL Developer 12 project and saved using the correct encoding (in this case UTF-8) when you build the project the MCR file that is generated can be encoded using UTF-16 LE for some reason.

At this point I don't know why this occurs, whether this is a Visual Studio issue, or whether XMetaL Developer can be made to control this.

The main issue is not the encoding however. XMetaL Author is capable of reading UTF-16 encoded MCR files or UTF-8 encoded MCR files. The issue is that for whatever reason, some characters are encoded incorrectly into the MCR file(in your example these include ä, ö, ü or ß). As far as I can tell the file is being written out as UTF-16 but the encoding for these characters is actually appears to be Latin1 for some reason.

The only immediate solution I can think of (unfortunately) is to build the MCR file as usual then open it directly in a text editor and replace incorrectly encoded characters before resaving the file (either as UTF-16 or UTF-8). Seems really painful.
Logged
Derek Read
Program Manager (XMetaL)
Administrator
Member

Posts: 2564



WWW
« Reply #3 on: May 25, 2018, 05:56:06 PM »

OK, so here's my fix:

1. Open your .JS file in XMetaL Developer's script editor (double click on it in the Project window).
2. In the Visual Studio main menu open File and select Save As.
3. In the Save As dialog save using the same filename and path (to overwrite the file) but change the encoding (using the little arrow on the Save button) to "Unicode - Codepage 1200". This is Microsoft's equivalent of UTF-16.

Note that this assumes your file contains the correct characters (if not fix them before step 3).

Now when you build the project the MCR file will be encoded to UTF-16 (which you cannot change) and because this .JS input file is in the same encoding (also UTF-16) there won't be any character encoding issues.

Why building a project doesn't trigger a proper encoding change from UTF-8 (or whatever other encoding you might have the .JS file in) into UTF-16 for the MCR file I don't know, but I don't know that it is worth looking into if the fix is this simple.
Logged
Pages: 1
Print
Jump to:  

email us