Utf8_unicode_ci,


#1

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

    def to_uf8(search)
    #- fix to handle utf8 problem when inputting search chrs
    search.gsub!(’%c3%b6’,’’)
    search.gsub!(’%c3%a4’,’’)
    search.gsub!(’%c3%a5’,’’)
    search.gsub!(’%c3%96’,’’)
    search.gsub!(’%c3%84’,’’)
    search.gsub!(’%c3%85’,’’)
    return search
    end

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 !


#2

2011/2/13 Hans M. 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.


#3

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.:


#4

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 mailto:removed_email_address@domain.invalid


#5

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: