[flask] Flask.request.args.get() and non-ascii characters
- From:
- Eunjin Lee
- Date:
- 2010-07-20 @ 09:24
Hi, everyone
I have a problem with using Flask.request.args.get() method.
When URL parameter's value contains any non-ascii character (like Korean '한글'),
Flask.request.args.get() method doesn't return valid values but blank
values (exactly <u''>)
For example URL like <http://test.com:3000/result/?res_cd=0000&res_msg=정상처리>
- request.args.get('res_cd', None) returns '0000' and
- request.args.get('res_msg', None) returns u'' (blank)
I tested this other browser and found different result in each browser
(IE, FF, GC)
- IE8 : request.args.get('res_msg', None) returns u''
- FF4 : request.args.get('res_msg', None) returns u''
- GC5 : request.args.get('res_msg', None) returns u'정상처리'
help, many thanks
Best regards,
EJ Lee
Re: [flask] Flask.request.args.get() and non-ascii characters
- From:
- Armin Ronacher
- Date:
- 2010-07-20 @ 09:34
Hi,
On 7/20/10 10:24 AM, Eunjin Lee wrote:
> When URL parameter's value contains any non-ascii character (like Korean '한글'),
> Flask.request.args.get() method doesn't return valid values but blank
> values (exactly<u''>)
>
> For example URL like<http://test.com:3000/result/?res_cd=0000&res_msg=정상처리>
>
> - request.args.get('res_cd', None) returns '0000' and
> - request.args.get('res_msg', None) returns u'' (blank)
By default Flask assumes UTF-8 encoding for URLs. If you don't have
UTF-8 URLs, you will have to let flask know that:
from flask import Request, Flask
class KoreanRequest(Request):
url_charset = 'euc-kr'
app = Flask(__name__)
app.request_class = KoreanRequest
Regards,
Armin
Re: [flask] Flask.request.args.get() and non-ascii characters
- From:
- Stephane Wirtel
- Date:
- 2010-07-20 @ 09:46
Armin,
We can this code in the snippet section.
Stephane
On 07/20/2010 11:34 AM, Armin Ronacher wrote:
> Hi,
>
> On 7/20/10 10:24 AM, Eunjin Lee wrote:
>> When URL parameter's value contains any non-ascii character (like Korean '한글'),
>> Flask.request.args.get() method doesn't return valid values but blank
>> values (exactly<u''>)
>>
>> For example URL like<http://test.com:3000/result/?res_cd=0000&res_msg=정상처리>
>>
>> - request.args.get('res_cd', None) returns '0000' and
>> - request.args.get('res_msg', None) returns u'' (blank)
> By default Flask assumes UTF-8 encoding for URLs. If you don't have
> UTF-8 URLs, you will have to let flask know that:
>
>
> from flask import Request, Flask
>
> class KoreanRequest(Request):
> url_charset = 'euc-kr'
>
> app = Flask(__name__)
> app.request_class = KoreanRequest
>
>
> Regards,
> Armin
Re: [flask] Flask.request.args.get() and non-ascii characters
- From:
- Armin Ronacher
- Date:
- 2010-07-20 @ 09:42
Hi,
Something I forgot, you will also need to tell the URL map the new charset:
app.url_map.charset = 'euc-kr'
Regards,
Armin
Re: [flask] Flask.request.args.get() and non-ascii characters
- From:
- Eunjin Lee
- Date:
- 2010-07-20 @ 10:05
Thank you very much, Armin :)
2010/7/20 Armin Ronacher <armin.ronacher@active-4.com>:
> Hi,
>
> Something I forgot, you will also need to tell the URL map the new charset:
>
> app.url_map.charset = 'euc-kr'
>
>
> Regards,
> Armin
>