Package idna
Overview ▹
Index ▹
Constants
UnicodeVersion is the Unicode version from which the tables in this package are derived.
const UnicodeVersion = "9.0.0"
func ToASCII ¶
func ToASCII(s string) (string, error)
ToASCII is a wrapper for Punycode.ToASCII.
func ToUnicode ¶
func ToUnicode(s string) (string, error)
ToUnicode is a wrapper for Punycode.ToUnicode.
type Option ¶
An Option configures a Profile at creation time.
type Option func(*options)
func BidiRule ¶
func BidiRule() Option
BidiRule enables the Bidi rule as defined in RFC 5893. Any application that relies on proper validation of labels should include this rule.
func MapForLookup ¶
func MapForLookup() Option
MapForLookup sets validation and mapping options such that a given IDN is transformed for domain name lookup according to the requirements set out in Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894, RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option to add this check.
The mappings include normalization and mapping case, width and other compatibility mappings.
func StrictDomainName ¶
func StrictDomainName(use bool) Option
StrictDomainName limits the set of permissable ASCII characters to those allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the hyphen). This is set by default for MapForLookup and ValidateForRegistration.
This option is useful, for instance, for browsers that allow characters outside this range, for example a '_' (U+005F LOW LINE). See http://www.rfc-editor.org/std/std3.txt for more details This option corresponds to the UseSTD3ASCIIRules option in UTS #46.
func Transitional ¶
func Transitional(transitional bool) Option
Transitional sets a Profile to use the Transitional mapping as defined in UTS #46. This will cause, for example, "ß" to be mapped to "ss". Using the transitional mapping provides a compromise between IDNA2003 and IDNA2008 compatibility. It is used by most browsers when resolving domain names. This option is only meaningful if combined with MapForLookup.
func ValidateForRegistration ¶
func ValidateForRegistration() Option
ValidateForRegistration sets validation options to verify that a given IDN is properly formatted for registration as defined by Section 4 of RFC 5891.
func ValidateLabels ¶
func ValidateLabels(enable bool) Option
ValidateLabels sets whether to check the mandatory label validation criteria as defined in Section 5.4 of RFC 5891. This includes testing for correct use of hyphens ('-'), normalization, validity of runes, and the context rules.
func VerifyDNSLength ¶
func VerifyDNSLength(verify bool) Option
VerifyDNSLength sets whether a Profile should fail if any of the IDN parts are longer than allowed by the RFC.
type Profile ¶
A Profile defines the configuration of a IDNA mapper.
type Profile struct {
// contains filtered or unexported fields
}
var ( // Punycode is a Profile that does raw punycode processing with a minimum // of validation. Punycode *Profile = punycode // Lookup is the recommended profile for looking up domain names, according // to Section 5 of RFC 5891. The exact configuration of this profile may // change over time. Lookup *Profile = lookup // Display is the recommended profile for displaying domain names. // The configuration of this profile may change over time. Display *Profile = display // Registration is the recommended profile for checking whether a given // IDN is valid for registration, according to Section 4 of RFC 5891. Registration *Profile = registration )
▹ Example
func New ¶
func New(o ...Option) *Profile
New creates a new Profile.
With no options, the returned Profile is the most permissive and equals the Punycode Profile. Options can be passed to further restrict the Profile. The MapForLookup and ValidateForRegistration options set a collection of options, for lookup and registration purposes respectively, which can be tailored by adding more fine-grained options, where later options override earlier options.
▹ Example
func (*Profile) String ¶
func (p *Profile) String() string
String reports a string with a description of the profile for debugging purposes. The string format may change with different versions.
func (*Profile) ToASCII ¶
func (p *Profile) ToASCII(s string) (string, error)
ToASCII converts a domain or domain label to its ASCII form. For example, ToASCII("bücher.example.com") is "xn--bcher-kva.example.com", and ToASCII("golang") is "golang". If an error is encountered it will return an error and a (partially) processed result.
func (*Profile) ToUnicode ¶
func (p *Profile) ToUnicode(s string) (string, error)
ToUnicode converts a domain or domain label to its Unicode form. For example, ToUnicode("xn--bcher-kva.example.com") is "bücher.example.com", and ToUnicode("golang") is "golang". If an error is encountered it will return an error and a (partially) processed result.