Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2017-10

Replacing accented letters

7 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Koenraad Lelong

Hi,

Is there an easy way to replace accented letters (mostly the French one's) with their not-accented equivalents ? E.g. é -> e.

I could do it with a lookup-table I think, but are there more efficient ways ?

TIA,

Koenraad.

Reply by email

Denis Kozlov
to Koenraad Lelong

You could use Unicode character decomposition.

For example, é (U+00E9) can be decomposed into an equivalent string of the base letter e (U+0065) and combining acute accent (U+0301).

Then, you could simply delete combining acute accents, leaving just the base letters.

Denis

Koenraad Lelong wrote 11 lines
Hi, Is there an easy way to replace accented letters (mostly the French one's) with their not-accented equivalents ? E.g. é -> e. I could do it with a lookup-table I think, but are there more efficient ways ? TIA, Koenraad.

Reply by email

Zbyněk Fiala
to Denis Kozlov

I needed it a long time ago and probably there is more simple way now.

Using utf8tools and LazUTF8: 
https://gist.github.com/zbyna/6d9cd98ca22fa4261f54a0a06a7e6f51

Dne 4.10.2017 v 18:19 Denis Kozlov via Lazarus napsal(a):

Show quoted text 24 lines
You could use Unicode character decomposition. For example, é (U+00E9) can be decomposed into an equivalent string of the base letter e (U+0065) and combining acute accent (U+0301). Then, you could simply delete combining acute accents, leaving just the base letters. Denis On 04/10/2017 17:08, Koenraad Lelong via Lazarus wrote: > Hi, > > Is there an easy way to replace accented letters (mostly the French > one's) with their not-accented equivalents ? E.g. é -> e. > > I could do it with a lookup-table I think, but are there more > efficient ways ? > > TIA, > > Koenraad.

Reply by email

Koenraad Lelong
to Zbyněk Fiala

Op 05-10-17 om 00:29 schreef Zbyněk Fiala via Lazarus:

Show quoted text 32 lines
I needed it a long time ago and probably there is more simple way now. Using utf8tools and LazUTF8: https://gist.github.com/zbyna/6d9cd98ca22fa4261f54a0a06a7e6f51 Dne 4.10.2017 v 18:19 Denis Kozlov via Lazarus napsal(a): > You could use Unicode character decomposition. > > For example, é (U+00E9) can be decomposed into an equivalent string of > the base letter e (U+0065) and combining acute accent (U+0301). > > Then, you could simply delete combining acute accents, leaving just > the base letters. > > Denis > > > On 04/10/2017 17:08, Koenraad Lelong via Lazarus wrote: >> Hi, >> >> Is there an easy way to replace accented letters (mostly the French >> one's) with their not-accented equivalents ? E.g. é -> e. >> >> I could do it with a lookup-table I think, but are there more >> efficient ways ? >> >> TIA, >> >> Koenraad. >

Hi,

I tried your routine, but is seems not to work. When I give a "normal" string, I get the same string as result which is fine. When I give a string with accented letters, I get an empty string as result.

Is there a way to identify the type of the string ? I.e. utf8, utf16, ...

Software is intended for Windows.

TIA,

Koenraad

Reply by email

Koenraad Lelong
to Ondrej Pokorny

Op 11-10-17 om 17:45 schreef Ondrej Pokorny via Lazarus:

Show quoted text 7 lines
On 11.10.2017 17:31, Koenraad Lelong via Lazarus wrote: > Software is intended for Windows. In this case you may use WinAPI as well: https://stackoverflow.com/a/1892432/1231269 Ondrej

Hi Ondrej,

On that page there are two pieces of code, I tried them both. One, OStripAccents, does not work, it returns te same string (AFAIK). The other, BestFit, can't compile because WideCharToMultiByte is not recognized. Does FPC have WideCharToMultiByte ? I searched the RTL (of FPC 3.0) but I can't find it. I googled, but no relevant answer.

TIA

Reply by email

Ondrej Pokorny
to Koenraad Lelong
Koenraad Lelong wrote 11 lines
Op 11-10-17 om 17:45 schreef Ondrej Pokorny via Lazarus: > On 11.10.2017 17:31, Koenraad Lelong via Lazarus wrote: >> Software is intended for Windows. > > In this case you may use WinAPI as well: > https://stackoverflow.com/a/1892432/1231269 > > Ondrej On that page there are two pieces of code, I tried them both. One, OStripAccents, does not work, it returns te same string (AFAIK).

OStripAccents is Delphi 2009+ only.

The other, BestFit, can't compile because WideCharToMultiByte is not recognized. Does FPC have WideCharToMultiByte ? I searched the RTL (of FPC 3.0) but I can't find it. I googled, but no relevant answer.

Add Windows to your uses clause.

Ondrej

Reply by email