# non-ASCII characters into equivalent ASCII

**URL:** <https://www.ruby-forum.com/t/non-ascii-characters-into-equivalent-ascii/97330>\
**Category:** Ruby\
**Created:** [July 6, 2006, 12:06pm UTC](https://www.ruby-forum.com/t/non-ascii-characters-into-equivalent-ascii/97330 "2006-07-06T12:06:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dmitrii\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/82dd89/32.png) [@Dmitrii\_D](https://www.ruby-forum.com/u/Dmitrii_D)\
**Post date:** [July 6, 2006, 12:06pm UTC](https://www.ruby-forum.com/t/non-ascii-characters-into-equivalent-ascii/97330/1 "2006-07-06T12:06:45Z")

</div>

What is the correctr Ruby-way to transform non-ASCII characters into  
their sort-of equivalent ASCII characters?

That is, how do I transform, say, Turkish characters ýðüþöçÝÐÜÞÖÇ into  
corresponding igusocIGUSOC? For Russian the excellent rutils gem  
exists. What about other languages? Or at least those with scripts  
based on Latin.

Thank you

---

<div class="post-metadata">

**Author:** ![Dmitrii\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/82dd89/32.png) [@Dmitrii\_D](https://www.ruby-forum.com/u/Dmitrii_D)\
**Post date:** [July 6, 2006, 12:16pm UTC](https://www.ruby-forum.com/t/non-ascii-characters-into-equivalent-ascii/97330/2 "2006-07-06T12:16:13Z")

</div>

> What is the correctr Ruby-way to transform non-ASCII characters into  
> their sort-of equivalent ASCII characters?
> 
> That is, how do I transform, say, Turkish characters ýðüþöçÝÐÜÞÖÇ into  
> corresponding igusocIGUSOC? For Russian the excellent rutils gem  
> exists. What about other languages? Or at least those with scripts  
> based on Latin.

Ok, found my own way:

Using Unicode and Rutils gems:

str = Unicode::decompose(string).bidi\_translify(false)

Works like a charm 🙂

---

<div class="post-metadata">

**Author:** ![Dmitrii\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/82dd89/32.png) [@Dmitrii\_D](https://www.ruby-forum.com/u/Dmitrii_D)\
**Post date:** [July 6, 2006, 12:28pm UTC](https://www.ruby-forum.com/t/non-ascii-characters-into-equivalent-ascii/97330/3 "2006-07-06T12:28:35Z")

</div>

On 06/07/06, Dmitrii D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Using Unicode and Rutils gems:
> 
> str = Unicode::decompose(string).bidi\_translify(false)

Interesting. I didn’t know Rutils could do that (and why would I? I  
can’t read Russian!)

Paul.

---

<div class="post-metadata">

**Author:** ![Dmitrii\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/82dd89/32.png) [@Dmitrii\_D](https://www.ruby-forum.com/u/Dmitrii_D)\
**Post date:** [July 6, 2006, 1:08pm UTC](https://www.ruby-forum.com/t/non-ascii-characters-into-equivalent-ascii/97330/4 "2006-07-06T13:08:35Z")

</div>

On 7/6/06, Paul B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> On 06/07/06, Dmitrii D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > Using Unicode and Rutils gems:
> > 
> > str = Unicode::decompose(string).bidi\_translify(false)
> 
> Interesting. I didn’t know Rutils could do that (and why would I? I  
> can’t read Russian!)

Well, Ruils simply transliterate from-to Latin-Cyrillic.  
bidi\_translify additionally removes “insignificant” characters such as  
commas and the like, which works well on decomposed Unicode strings.
