NEWS by Erich Stähli |
SwissSalary 365 | Ignora e-mail del 10.11.2019 08:00
Si prega di ignorare la lettera di prova di domenica mattina, 10.11.2019 08:00
Full story
NEWS by Erich Stähli |
Dynamics 365 Business Central on-premise - prima versione SwissSalary disponibile
SwissSalary è pronto per Dynamics 365 Business Central on-premise
Full story
NEWS by Erich Stähli |
IncaMail - Versione 4.6
IncaMail ha rilasciato la nuova versione 4.6
Full story
NEWS by Erich Stähli |
Dynamics NAV 2018 | SwissSalary NAV è pronto
Sono disponibili gli oggetti SwissSalary NAV per Dynamics NAV 2018.
Full story
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
Full story
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?
Full story
NEWS by Erich Stähli |
Assegni familiari & Tariffe Imposta alla fonte 2018
Aggiornamento del 22.12.2017
Full story
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).
Full story
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.
Full story
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!
Full story
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.
Full story
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
Full story
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.
Full story
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.
Full story
NEWS by Stephan Grossenbacher |
Invio dei dati dell'IF elettronicamente esclusivamente con ELM
IF soltanto possibile con ELM, ISEL non viene più sostenuto.
Full story
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.
Full story
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
Full story

Tech

26 posts

Last post : 10/08/2018

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