Private/_common/Convert-DiacriticsToUrlEncoded.ps1

function Convert-DiacriticsToUrlEncoded {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory, Position=0)]
        [ValidateNotNullOrEmpty()]
        [string]$String
    )

    $lookup = New-Object system.collections.hashtable
    $lookup.'À' = 'À'  #A, grave
    $lookup.'Á' = 'Á'  #A, acute
    $lookup.'Â' = 'Â'  #A, circumflex
    $lookup.'Ã' = 'Ã'  #A, tilde
    #$lookup.'Ä' = 'Ä' #A, umlaut
    $lookup.'Å' = 'Å'  #A, ring
    $lookup.'Æ' = 'Æ'  #AE, dipthong
    $lookup.'Ç' = 'Ç'  #C, cedilla
    $lookup.'È' = 'È'  #E, grave
    $lookup.'É' = 'É'  #E, acute
    $lookup.'Ê' = 'Ê'  #E, cicumflex
    $lookup.'Ë' = 'Ë'  #E, umlaut
    $lookup.'Ì' = 'Ì'  #I, grave
    $lookup.'Í' = 'Í'  #I, acute
    $lookup.'Î' = 'Î'  #I, circumflex
    $lookup.'Ï' = 'Ï'  #I, umlaut
    $lookup.'Ð' = 'Ð'  #Eth, Icelandic
    $lookup.'Ñ' = 'Ñ'  #N, tilde
    $lookup.'Ò' = 'Ò'  #O, grave
    #$lookup.'Ó' = 'Ó' #O, acute
    #$lookup.'Ô' = 'Ô' #O, circumflex
    $lookup.'Õ' = 'Õ'  #O, tilde
    $lookup.'Ö' = 'Ö'  #O, umlaut
    $lookup.'×' = '×'  #multiply sign
    $lookup.'Ø' = 'Ø'  #O, slash
    $lookup.'Ù' = 'Ù'  #U, grave
    $lookup.'Ú' = 'Ú'  #U, acute
    $lookup.'Û' = 'Û'  #U, circumflex
    $lookup.'Ü' = 'Ü'  #U, umlaut
    $lookup.'Ý' = 'Ý'  #Y, acute
    $lookup.'Þ' = 'Þ'  #THORN, Icelandic
    $lookup.'ß' = 'ß'  #eszett
    $lookup.'à' = 'à'  #a, grave
    $lookup.'á' = 'á'  #a, acute
    $lookup.'â' = 'â'  #a, circumflex
    $lookup.'ã' = 'ã'  #a, tilde
    $lookup.'ä' = 'ä'  #a, umlaut
    $lookup.'å' = 'å'  #a, ring
    $lookup.'æ' = 'æ'  #ae, dipthong
    $lookup.'ç' = 'ç'  #c, cedilla
    $lookup.'è' = 'è'  #e, grave
    $lookup.'é' = 'é'  #e, acute
    $lookup.'ê' = 'ê'  #e, cicumflex
    $lookup.'ë' = 'ë'  #e, umlaut
    $lookup.'ì' = 'ì'  #i, grave
    $lookup.'í' = 'í'  #i, acute
    $lookup.'î' = 'î'  #i, circumflex
    $lookup.'ï' = 'ï'  #i, umlaut
    $lookup.'ð' = 'ð'  #eth, Icelandic
    $lookup.'ñ' = 'ñ'  #n, tilde
    $lookup.'ò' = 'ò'  #o, grave
    $lookup.'ó' = 'ó'  #o, acute
    $lookup.'ô' = 'ô'  #o, circumflex
    $lookup.'õ' = 'õ'  #o, tilde
    $lookup.'ö' = 'ö'  #o, umlaut
    $lookup.'÷' = '÷'  #divide sign
    $lookup.'ø' = 'ø'  #o, slash
    $lookup.'ù' = 'ù'  #u, grave
    $lookup.'ú' = 'ú'  #u, acute
    $lookup.'û' = 'û'  #u, circumflex
    $lookup.'ü' = 'ü'  #u, umlaut
    $lookup.'ý' = 'ý'  #y, acute
    $lookup.'þ' = 'þ'  #thorn, Icelandic
    $lookup.'ÿ' = 'ÿ'  #y, umlaut

    foreach ($key in $lookup.Keys){
        $String = $String.Replace($key,$lookup.$key)
    }

    return $String
}