NAV 2013 uses Unicode internally - but what does this mean for us developers?

mag 22, 2014, 15:27 by Yanik Fahrni

The newest version of Microsoft Dynamics NAV 2013 supports and uses Unicode internally. But what does this mean for our daily live? In this article I want to share with you our experiences and pitfalls when developing SwissSalary for NAV 2013.

Unicode in general

Unicode is the mainly standard today for seamless support for all possible and impossible characters on this planet. From arabic letters to chinese to cidllic to western, unicode eats everything without complaining. So if you need a report containig arabic and japanese characters, unicode is what you want. But of course it is also very usefull for databases. If a database collection is unicode, it supports different languages in the same database. This was not possible before unicode. 

Unicode in NAV 2013

In versions before NAV 2013, the internal encoding was ASCII - a very limited character set, especially for non-western characters. With NAV 2013, the internal encoding is Unicode. This means, if NAV reads a record from the database into the memory, it is stored as Unicode in the memory. This is very important to know!

So, if we use a string value from the memory in an way the encoding matters, we must be aware of the fact that it is Unicode, not ASCII anymore.

Pitfalls

If you have this Code:

MyChar := 'ü';
MyInteger := MyChar; // gets the integer value of the character
MESSAGE(FORMAT(MyInteger));

In Versions prior NAV 2013, you got the Number xxx as the result. This was the ASCII value for the character 'ü'.

In NAV 2013, the same code gives you the number yyy as a result. This is the Unicode value for the letter 'ü'.

In SwissSalary, we need to create a lot of different import/export files with ANSI or UTF8 encoding. We had convertion functions like this:

IntegerValue := InChar;

CASE IntegerValue OF
  255: ConvertedChar := 134;
  256...
END;

EXIT(ConvertedChar);

(Of course, there where COM automations for convertion available before, but we avoided as mutch external components as possible to provide a painless installation of SwissSalary.)

Because NAV 2013 now returns the Unicode Integer Value (and not the ASCII Integer value like in previous versions) our conversion functions do not work anymore: The convertions will be wrong, if the character is converterted at all.

First, we tried to rewrite the function to support the new Unicode values. But hey, Unicode is not limited at all in terms of maximal numbers of characters, and it get's updated every month or two. Do we want to update this for the rest of our developer live by hand? Certainly not.

As NAV2013  supports the .NET framework for all avalable clients (at least server side) we can now take advantage of the convertion functionalities .NET provides. And based on the fact that NAV 2013 is built completly on the .NET framework, we can be shure that it is available and can use ist without worries.

The solution

With the .NET component StreamReader we now can convert Unicode much simpler in NAV 2013. The following code shows how to import a ANSI encode file in NAV:

You can download the demo here.

Conclusion

Unicode in NAV 2013 is a good thing for sure and long overdue. But you have to know what changed inside NAV to get your functions work, escpecially when writing/reading files or streams.

Btw: In XMLPorts, you can define the Encoding in the Properties, so you don't have to use a convertion function.

<screenshot>

And because ASCII and UTF8 are subsets of Unicode, we don't even need to convert those anymore when importing a file!

http://cagle.com/working/080213/singer.gif

http://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Unicode_logo.svg/220px-Unicode_logo.svg.png

NEWS by Erich Stähli |
La SUVA paga il premio per gli infortuni professionali durante lavoro ridotto
Lavoro ridotto: SUVA paga il premio AIP
più
NEWS by Pascal Lüthi |
Siamo online per Voi da casa!
L'intero team di SwissSalary lavora in casa a partire da ora fino al 19 aprile
più
NEWS by Patric Lehmann |
Attività a orario ridotto
Nota sul manuale Attività a orario ridotto
più
NEWS by Patric Lehmann |
Nuove tariffe imposta alla fonte canton SO
Nuove tariffe imposta alla fonte canton SO retroattivo 01.01.2020
più
NEWS by Erich Stähli |
Imposta alla fonte cantone Zurigo | correzioni minori nella tariffa 2014 (tariffa A)
Correzioni minori alla vecchia tariffa 2014 del Cantone di Zurigo
più
NEWS by Erich Stähli |
Imposta alla fonte Cantone Ticino | Nuove tariffe 2020
Nuove aliquote d'imposta alla fonte per il Cantone Ticino
più
NEWS by Patric Lehmann |
Chiusura dell'anno 2019/2020
più
NEWS by Erich Stähli |
Imposta alla fonte tariffa 2020 sono disponibile
Le nuove tariffe alla fonte 2020 sono disponibili in una prima versione dal 19.12.2019.
più
NEWS by Erich Stähli |
KLE | SwissSalary trasmette il primo rapporto sull'incidente
KLE Management sarà a vostra disposizione immediatamente dopo il completamento della fase pilota.
più
NEWS by Erich Stähli |
Dynamics 365 Business Central on-premise - prima versione SwissSalary disponibile
SwissSalary è pronto per Dynamics 365 Business Central on-premise
più
NEWS by Erich Stähli |
IncaMail - Versione 4.6
IncaMail ha rilasciato la nuova versione 4.6
più
NEWS by Erich Stähli |
Dynamics NAV 2018 | SwissSalary NAV è pronto
Sono disponibili gli oggetti SwissSalary NAV per Dynamics NAV 2018.
più
NEWS by Erich Stähli |
Hotfix SwissSalary 5052.002 disponibile
Correzione per i datori di lavoro con dipendenti assoggettati a imposta alla fonte presso Cantone GE
più
NEWS by Erich Stähli |
Sei pronto per il primo pagamento dello stipendio a gennaio 2018?
Nei prossimi giorni, effettuerai il primo pagamento di stipendio per gennaio 2018. Hai corretto le percentuali del 2018 per la seguente assicurazione sociale?
più
NEWS by Erich Stähli |
Assegni familiari & Tariffe Imposta alla fonte 2018
Aggiornamento del 22.12.2017
più
NEWS by Erich Stähli |
ISO 20022 | pain.001 | nuova interfaccia per il pagamento salario
SwissSalary è pronto per il nuovo pagamento standard ISO 20022 (pain.001).
più
NEWS by Erich Stähli |
Le tariffe dell'imposta alla fonte sono diponibili per 2017!
Vi preghiamo di verificare nelle prossime settimane sempre sul nostro sito se ci sono ancora delle modifiche.
più
NEWS by Erich Stähli |
SwissSalary Ltd. è nel President's Club 2016 di Microsoft Dynamics
Anche nel 2016 apparteniamo ai primi 5% partner di tutto il mondo di Microsoft Dynamics!
più
NEWS by Erich Stähli |
Manuale sulla 'Chiusura dell'anno' e 'ELM' sono disponibili | ELM-FAQ
Stiamo aggiornando il manuale 'ELM'. Ma potete prendere i manuali precedenti come aiuto.
più
NEWS by Michela De Feo |
SwissSalary è certificato per Microsoft Dynamics NAV 2016
CfMD-certificazione (Certified for Microsoft Dynamics) concluso con successo per SwissSalary NAV 2016
più
NEWS by Erich Stähli |
AGGIORNATO: Tariffe imposta alla fonte 2015 sono disponibili
Le tariffe dell'imposta alla fonte per 2015 sono disponibili! Vi preghiamo di verificare nelle prossime settimane sempre sul nostro sito se ci sono ancora delle modifiche.
più
NEWS by Erich Stähli |
Assegni familiari e fondi 2015 | disponibili
Ci sono diverse modifiche riguardo gli'assegni familiari e contributi cantonali dei datori di lavoro. Tutti i documenti li trovate nella zona protetta sul nostro sito.
più
NEWS by Stephan Grossenbacher |
Invio dei dati dell'IF elettronicamente esclusivamente con ELM
IF soltanto possibile con ELM, ISEL non viene più sostenuto.
più
NEWS by Stephan Grossenbacher |
Nota sulla fornitura dei dati per l'imposta alla fonte con swissdec 4.0
Download della 'Nota sulla fornitura dei dati conformamente agli Standard salariali CH con l'imposta alla fonte.
più
NEWS by Stephan Grossenbacher |
SwissSalary ha ricevuto la certificazione della versione 4.0 di swissdec!
Il SwissSalary è disponibile da subito con la nuova versione 4.0 swissdec
più