och html filen enligt
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=8" />
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. När jag använder autocomplete och gör
search=request.raw_post.downcase.split('=').second.split('&').first
för att ta ut söksträngen så får jag '%c3%b6' liknande tecken för ÅÄÖ
Detta åtgärdar jag med följande 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 rätt väg att gå !!!
2. När jag söker efter matchningar enligt
['LOWER(name) LIKE ?', '%' + search.downcase + '%' ]
ger search med AÅÄ samma resultat, dvs Å i autocompletefältet matchar
alla namn som har ÅÄA
3. Nu vet jag inte om det finns samma problem alla gånger jag använder
find med ÅÄÖ i villkorssatsen ?
I så fall är jag illa ute !
Jag har läst att man ev kan åtgärda detta med att
collation=utf8_unicode_c
men var och hur definierar man detta ?
Finns det andra lösningar till mina problem ?
Tacksam för all hjälp !
____________________________________________
Hans Marmolin
St: Larsgatan 50, 58224 Linköping, Sweden
Phone: +46708371202
Nej, definitivt inte. raw_post är väl URL-encodad, d.v.s. alla
"konstiga" tecken skrivs med procenttecken och siffror.
Kan du inte använda params['search'] eller liknande för det här? Det
värde du vill åt finns förmodligen redan omgjort till UTF-8
någonstans. raw_post verkar onödigt lågnivå.
> 2. När jag söker efter matchningar enligt
> ['LOWER(name) LIKE ?', '%' + search.downcase + '%' ]
> ger search med AÅÄ samma resultat, dvs Å i autocompletefältet matchar alla
Jag brukar göra typ
['name COLLATE utf8_swedish_ci LIKE ?', '%' + search + '%' ]
Då blir sökningen case-insensitive (även med åäö/ÅÄÖ) och skiljer på
t.ex. "a" och "å" men inte på t.ex. "a" och "á".
> 3. Nu vet jag inte om det finns samma problem alla gånger jag använder find
> med ÅÄÖ i villkorssatsen ?
> I så fall är jag illa ute !
Skriv tester för detta så märker du.
Jag har ett annat problem som jag länge sökt svar på men inte kunnat
hitta något.
Det gäller inte ÖÄÅ men best practise så det platsar väl egentligen
inte i denna lista, men ändock - det kan ju vara av visst allmänt
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 gäller en plats kan anropas från en plats-lista
eller från ett plats-autocomplet fält, etc i platscontroller viewn men
även från en länk i en annan view, eller från ett redirect i en annan
action. De olika anropen har olika indata och kräver delvis olika
logik och implementation
Resultatet är tjocka controller actions med många villkorssatser -
inte vidare snyggt!
Men hur löser 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 lätt hämnar i tex 5 olika plats-controllers
- flera special-actions men det bryter mot RESTs principer
- designa om så att problemet inte uppstår, men det bryter mot en
Användarorienterad design som jag tillämpar där man utgår ifrån
användarnas uppgifter och situation
Så min fråga är!
Vad är best practise när det gäller detta problem?
Tacksam för all hjälp
____________________________________________
Hans Marmolin
St: Larsgatan 50, 58224 Linköping, Sweden
Phone: +46708371202
> --
> You received this message because you are subscribed to the Google
> Groups "rails-i18n" group.
> To post to this group, send email to rails...@googlegroups.com.
> To unsubscribe from this group, send email to rails-i18n+...@googlegroups.com
> .
> For more options, visit this group at http://groups.google.com/group/rails-i18n?hl=en
> .
>
>
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 Marmolin wrote:
> Hej
> Jag har en rails applikation som anv�nder 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
> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
> <head>
> <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
> <meta http-equiv="X-UA-Compatible" content="IE=8" />
>
> 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. N�r jag anv�nder autocomplete och g�r
> search=request.raw_post.downcase.split('=').second.split('&').first
> f�r att ta ut s�kstr�ngen s� f�r jag '%c3%b6' liknande tecken f�r ���
> Detta �tg�rdar jag med f�ljande 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 r�tt v�g att g� !!!
>
> 2. N�r jag s�ker efter matchningar enligt
> ['LOWER(name) LIKE ?', '%' + search.downcase + '%' ]
> ger search med A�� samma resultat, dvs � i autocompletef�ltet matchar
> alla namn som har ��A
>
> 3. Nu vet jag inte om det finns samma problem alla g�nger jag anv�nder
> find med ��� i villkorssatsen ?
> I s� fall �r jag illa ute !
>
> Jag har l�st att man ev kan �tg�rda detta med att collation=utf8_unicode_c
> men var och hur definierar man detta ?
>
> Finns det andra l�sningar till mina problem ?
>
> Tacksam f�r all hj�lp !
>
> ____________________________________________
> Hans Marmolin
> St: Larsgatan 50, 58224 Link�ping, Sweden
> Phone: +46708371202
>
>
>
>
>
>
>
>
>
--
#-# Martin J. D�rst, Professor, Aoyama Gakuin University
#-# http://www.sw.it.aoyama.ac.jp mailto:due...@it.aoyama.ac.jp
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 för ÖÄÅ in an
autocomplete field
and the proposed solution was to use
['name COLLATE utf8_swedish_ci LIKE ?', '%' + search + '%' ]
as search condition
____________________________________________
Hans Marmolin
St: Larsgatan 50, 58224 Linköping, Sweden
Phone: +46708371202
14 feb 2011 kl. 02.14 skrev Martin J. Dürst:
> 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 Marmolin wrote:
>> Hej
>> Jag har en rails applikation som använder 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
>> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
>> <head>
>> <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
>> <meta http-equiv="X-UA-Compatible" content="IE=8" />
>>
>> 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. När jag använder autocomplete och gör
>> search=request.raw_post.downcase.split('=').second.split('&').first
>> för att ta ut söksträngen så får jag '%c3%b6' liknande tecken för ÅÄÖ
>> Detta åtgärdar jag med följande 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 rätt väg att gå !!!
>>
>> 2. När jag söker efter matchningar enligt
>> ['LOWER(name) LIKE ?', '%' + search.downcase + '%' ]
>> ger search med AÅÄ samma resultat, dvs Å i autocompletefältet matchar
>> alla namn som har ÅÄA
>>
>> 3. Nu vet jag inte om det finns samma problem alla gånger jag
>> använder
>> find med ÅÄÖ i villkorssatsen ?
>> I så fall är jag illa ute !
>>
>> Jag har läst att man ev kan åtgärda detta med att
>> collation=utf8_unicode_c
>> men var och hur definierar man detta ?
>>
>> Finns det andra lösningar till mina problem ?
>>
>> Tacksam för all hjälp !
>>
>> ____________________________________________
>> Hans Marmolin
>> St: Larsgatan 50, 58224 Linköping, Sweden
>> Phone: +46708371202
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
> --
> #-# Martin J. Dürst, Professor, Aoyama Gakuin University
> #-# http://www.sw.it.aoyama.ac.jp mailto:due...@it.aoyama.ac.jp
>