#27125: Can not support django Internationalized domain name in URLValidation
-----------------------------+--------------------------------------
Reporter: RaminFP | Owner: nobody
Type: New feature | Status: new
Component: Core (URLs) | Version: 1.10
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-----------------------------+--------------------------------------
Description changed by RaminFP:
Old description:
> Hi,
>
> i see here
> [https://github.com/django/django/blob/master/django/core/validators.py#L79&L156
> validator.py], there isn't docs aboud
> [https://en.wikipedia.org/wiki/Internationalized_domain_name IDN]
> supported django IDN or no,
>
> there is arabic domains on internet like [http://عربي.امارات عربي.امارات]
>
> {{{
> from django.core.validators import URLValidator
> validate = URLValidator()
>
> validate('http://عربی.امارات')
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "C:\Python27\lib\site-packages\django\core\validators.py", line
> 114, in __call__
> value = force_text(value)
> File "C:\Python27\lib\site-packages\django\utils\encoding.py", line 88,
> in force_text
> raise DjangoUnicodeDecodeError(s, *e.args)
> django.utils.encoding.DjangoUnicodeDecodeError: 'utf8' codec can't decode
> byte 0x9f in position 12: invalid start byte. You passed in
> 'http://\xe3\xa9\xa0?.\x9f\xea\x9f\xa9\x9f\xa2' (<type 'str'>)
>
> }}}
>
> You can use idn2 tool.
> {{{
> root@ramin ~ > idn2 'عربي.امارات'
> xn--ngbrx4e.xn--mgbaam7a8h
> root@ramin > nslookup $(idn2 'عربي.امارات')
> Server: 127.0.1.1
> Address: 127.0.1.1#53
>
> Non-authoritative answer:
> Name: xn--ngbrx4e.xn--mgbaam7a8h
> Address: 79.98.120.105
>
> root@ramin > nmap $(idn2 'عربي.امارات') -p80
>
> Starting Nmap 6.40 ( http://nmap.org ) at 2016-08-26 12:09 +07
> Nmap scan report for xn--ngbrx4e.xn--mgbaam7a8h (79.98.120.105)
> Host is up (0.23s latency).
> rDNS record for 79.98.120.105: web-lb0.web.308th.dubai.aeda.net.ae
> PORT STATE SERVICE
> 80/tcp open http
>
> Nmap done: 1 IP address (1 host up) scanned in 0.88 seconds
> }}}
>
> or use CURL
>
> {{{
> $ curl --head xn--ngbrx4e.xn--mgbaam7a8h
>
> % Total % Received % Xferd Average Speed Time Time Time
> Current
> Dload Upload Total Spent Left
> Speed
> 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:--
> 0HTTP/1.0 200 OK
> Date: Fri, 26 Aug 2016 05:09:07 GMT
> Server: Apache
> X-Powered-By: PHP/5.3.3
> Content-Type: text/html
> Connection: close
> }}}
>
> please see this answer [http://stackoverflow.com/questions/1755144/how-
> to-validate-domain-name-in-php/4694816#4694816 stackoverflow]
>
> Thanks,
> Ramin
New description:
Hi,
i see here
[https://github.com/django/django/blob/master/django/core/validators.py#L116
validator.py], there isn't docs aboud
[https://en.wikipedia.org/wiki/Internationalized_domain_name IDN]
supported django IDN or no,
there is arabic domains on internet like [http://عربي.امارات عربي.امارات]
{{{
from django.core.validators import URLValidator
validate = URLValidator()
validate('http://عربی.امارات')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\django\core\validators.py", line
114, in __call__
value = force_text(value)
File "C:\Python27\lib\site-packages\django\utils\encoding.py", line 88,
in force_text
raise DjangoUnicodeDecodeError(s, *e.args)
django.utils.encoding.DjangoUnicodeDecodeError: 'utf8' codec can't decode
byte 0x9f in position 12: invalid start byte. You passed in
'http://\xe3\xa9\xa0?.\x9f\xea\x9f\xa9\x9f\xa2' (<type 'str'>)
}}}
You can use idn2 tool.
{{{
root@ramin ~ > idn2 'عربي.امارات'
xn--ngbrx4e.xn--mgbaam7a8h
root@ramin > nslookup $(idn2 'عربي.امارات')
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: xn--ngbrx4e.xn--mgbaam7a8h
Address: 79.98.120.105
root@ramin > nmap $(idn2 'عربي.امارات') -p80
Starting Nmap 6.40 ( http://nmap.org ) at 2016-08-26 12:09 +07
Nmap scan report for xn--ngbrx4e.xn--mgbaam7a8h (79.98.120.105)
Host is up (0.23s latency).
rDNS record for 79.98.120.105: web-lb0.web.308th.dubai.aeda.net.ae
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.88 seconds
}}}
or use CURL
{{{
$ curl --head xn--ngbrx4e.xn--mgbaam7a8h
% Total % Received % Xferd Average Speed Time Time Time
Current
Dload Upload Total Spent Left
Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:--
0HTTP/1.0 200 OK
Date: Fri, 26 Aug 2016 05:09:07 GMT
Server: Apache
X-Powered-By: PHP/5.3.3
Content-Type: text/html
Connection: close
}}}
please see this answer [http://stackoverflow.com/questions/1755144/how-to-
validate-domain-name-in-php/4694816#4694816 stackoverflow]
Thanks,
Ramin
--
--
Ticket URL: <https://code.djangoproject.com/ticket/27125#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/065.724589940028389b6c6c1be413d5cf3f%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.