# Utf8\_unicode\_ci,

**URL:** <https://www.ruby-forum.com/t/utf8-unicode-ci/203117>\
**Category:** Rails I18n\
**Created:** [February 13, 2011, 11:18am UTC](https://www.ruby-forum.com/t/utf8-unicode-ci/203117 "2011-02-13T11:18:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [February 13, 2011, 11:18am UTC](https://www.ruby-forum.com/t/utf8-unicode-ci/203117/1 "2011-02-13T11:18:46Z")

</div>

Hej  
Jag har en rails applikation som anvnder MYSQL och har definierat  
tabellerna enligt  
create\_table :places, :force =\> true, :force =\> true, :options =\>  
‘ENGINE=InnoDB DEFAULT CHARSET=utf8’ do |table|

och html filen enligt

och databsen i configurationsflen enligt  
development:  
adapter: mysql  
encoding: utf8  
database: Disweb\_1-development  
username: root  
password:  
host: localhost  
pool: 5  
timeout: 5000

Mina problem r

1. Nr jag anvnder autocomplete och gr  
search=request.raw\_post.downcase.split(’=’).second.split(’&’).first  
fr att ta ut skstrngen s fr jag ‘%c3%b6’ liknande tecken fr  
Detta tgrdar jag med fljande fix

Vilket inte verkar vara rtt vg att g !!!

1. Nr jag sker efter matchningar enligt  
[‘LOWER(name) LIKE ?’, ‘%’ + search.downcase + ‘%’]  
ger search med A samma resultat, dvs i autocompletefltet matchar  
alla namn som har A

2. Nu vet jag inte om det finns samma problem alla gnger jag anvnder  
find med i villkorssatsen ?  
I s fall r jag illa ute !

Jag har lst att man ev kan tgrda detta med att  
collation=utf8\_unicode\_c  
men var och hur definierar man detta ?

Finns det andra lsningar till mina problem ?

Tacksam fr all hjlp !

---

<div class="post-metadata">

**Author:** ![marmolin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/71e660/32.png) [@marmolin](https://www.ruby-forum.com/u/marmolin)\
**Post date:** [February 13, 2011, 11:58am UTC](https://www.ruby-forum.com/t/utf8-unicode-ci/203117/2 "2011-02-13T11:58:13Z")

</div>

2011/2/13 Hans M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Mina problem r
> 
> 1. Nr jag anvnder autocomplete och gr  
> search=request.raw\_post.downcase.split(‘=’).second.split(‘&’).first  
> fr att ta ut skstrngen s fr jag ‘%c3%b6’ liknande tecken fr  
> Detta tgrdar jag med fljande fix
> 
> def to\_uf8(search)  
> #- fix to handle utf8 problem when inputting search chrs  
> search.gsub!(‘%c3%b6’,‘’)  
> Vilket inte verkar vara rtt vg att g !!!

Nej, definitivt inte. raw\_post r vl URL-encodad, d.v.s. alla  
“konstiga” tecken skrivs med procenttecken och siffror.

Kan du inte anvnda params[‘search’] eller liknande fr det hr? Det  
vrde du vill t finns frmodligen redan omgjort till UTF-8  
ngonstans. raw\_post verkar ondigt lgniv.

> 1. Nr jag sker efter matchningar enligt  
> [‘LOWER(name) LIKE ?’, ‘%’ + search.downcase + ‘%’]  
> ger search med A samma resultat, dvs i autocompletefltet matchar alla

Jag brukar gra typ

[‘name COLLATE utf8\_swedish\_ci LIKE ?’, ‘%’ + search + ‘%’]

D blir skningen case-insensitive (ven med /) och skiljer p  
t.ex. “a” och “” men inte p t.ex. “a” och “”.

> 1. Nu vet jag inte om det finns samma problem alla gnger jag anvnder find  
> med i villkorssatsen ?  
> I s fall r jag illa ute !

Skriv tester fr detta s mrker du.

---

<div class="post-metadata">

**Author:** ![marmolin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/71e660/32.png) [@marmolin](https://www.ruby-forum.com/u/marmolin)\
**Post date:** [February 13, 2011, 7:01pm UTC](https://www.ruby-forum.com/t/utf8-unicode-ci/203117/3 "2011-02-13T19:01:09Z")

</div>

Henrik  
Tack fr hjlpen - skall flja dina rd. D tror jag att problemen  
lser sig

Jag har ett annat problem som jag lnge skt svar p men inte kunnat  
hitta ngot.  
Det gller inte men best practise s det platsar vl egentligen  
inte i denna lista, men ndock - det kan ju vara av visst allmnt  
intresse

Jag har ofta flera olika views som anropar samma action i en  
controller med olika indata och ibland skall ox olika views renderas  
tex en show action som gller en plats kan anropas frn en plats-lista  
eller frn ett plats-autocomplet flt, etc i platscontroller viewn men  
ven frn en lnk i en annan view, eller frn ett redirect i en annan  
action. De olika anropen har olika indata och krver delvis olika  
logik och implementation

Resultatet r tjocka controller actions med mnga villkorssatser -  
inte vidare snyggt!

Men hur lser rman problemet ?

- villkorsatser i en action men det bryter mot regeln “tunna  
controllers”
- flera controllers - men det bryter mot DRY d mycket av koden r  
gemensam och man ltt hmnar i tex 5 olika plats-controllers
- flera special-actions men det bryter mot RESTs principer
- designa om s att problemet inte uppstr, men det bryter mot en  
Anvndarorienterad design som jag tillmpar dr man utgr ifrn  
anvndarnas uppgifter och situation

S min frga r!  
Vad r best practise nr det gller detta problem?

Tacksam fr all hjlp

* * *

Hans M.  
St: Larsgatan 50, 58224 Linkping, Sweden  
Phone: +46708371202

13 feb 2011 kl. 11.56 skrev Henrik N.:

---

<div class="post-metadata">

**Author:** ![marmolin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/71e660/32.png) [@marmolin](https://www.ruby-forum.com/u/marmolin)\
**Post date:** [February 14, 2011, 2:15am UTC](https://www.ruby-forum.com/t/utf8-unicode-ci/203117/4 "2011-02-14T02:15:44Z")

</div>

Hello Hans,

Can you please post question and answer (or a summary thereof) in  
English, so that the rest of the subscribers can follow the discussion?

[From looking at the code, a function such as _to\_utf8_ below is  
extremely restricted, and there is a high chance that you soon get hit  
with a character that’s not in your list.]

Regards, Martin.

On 2011/02/13 19:18, Hans M. wrote:

> timeout: 5000 search.gsub!('%c3%b6','') 2. Nr jag sker efter matchningar enligt

–  
#-# Martin J. Drst, Professor, Aoyama Gakuin University  
#-# [http://www.sw.it.aoyama.ac.jp](http://www.sw.it.aoyama.ac.jp)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![marmolin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/71e660/32.png) [@marmolin](https://www.ruby-forum.com/u/marmolin)\
**Post date:** [February 14, 2011, 7:05am UTC](https://www.ruby-forum.com/t/utf8-unicode-ci/203117/5 "2011-02-14T07:05:46Z")

</div>

Sorry Martin  
But I posted it in the wrong group and it has been moved to rails-se  
For your information

One problem was that I use request.raw\_post to get the search string  
and that does no handle  
My mistake. Did not really understad how autocomplete worked when I  
forst wrote that code  
The proposed solution was to use params[‘search’] instad that should  
take care of that

The second problem was about how to search only fr in an  
autocomplete field  
and the proposed solution was to use  
[‘name COLLATE utf8\_swedish\_ci LIKE ?’, ‘%’ + search + ‘%’]  
as search condition

* * *

Hans M.  
St: Larsgatan 50, 58224 Linkping, Sweden  
Phone: +46708371202

14 feb 2011 kl. 02.14 skrev Martin J. Drst:
