我有一些字符串包含在ASCII中找不到的字符;如á,é,í,ó,ú;我需要一個函數將它們轉換成可接受的東西,比如a,e,i,o,u。這是因爲我將從這些字符串創建IIS網站(即,我將使用它們作爲域名)。將Unicode字符串轉換爲ASCII
-2
A
回答
0
function Convert-DiacriticCharacters {
param(
[string]$inputString
)
[string]$formD = $inputString.Normalize(
[System.text.NormalizationForm]::FormD
)
$stringBuilder = new-object System.Text.StringBuilder
for ($i = 0; $i -lt $formD.Length; $i++){
$unicodeCategory = [System.Globalization.CharUnicodeInfo]::GetUnicodeCategory($formD[$i])
$nonSPacingMark = [System.Globalization.UnicodeCategory]::NonSpacingMark
if($unicodeCategory -ne $nonSPacingMark){
$stringBuilder.Append($formD[$i]) | out-null
}
}
$stringBuilder.ToString().Normalize([System.text.NormalizationForm]::FormC)
}
產生的功能將轉換變音符號在follwoing方式:
PS C:\> Convert-DiacriticCharacters "Ångström"
Angstrom
PS C:\> Convert-DiacriticCharacters "Ó señor"
O senor
從複製:http://cosmoskey.blogspot.nl/2009/09/powershell-function-convert.html
0
以this answer from a C#/.Net question似乎在PowerShell中的工作大致移植是這樣的:
function Remove-Diacritics
{
Param([string]$Text)
$chars = $Text.Normalize([System.Text.NormalizationForm]::FormD).GetEnumerator().Where{
[System.Char]::GetUnicodeCategory($_) -ne [System.Globalization.UnicodeCategory]::NonSpacingMark
}
(-join $chars).Normalize([System.Text.NormalizationForm]::FormC)
}
例如
PS C:\> Remove-Diacritics 'abcdeéfg'
abcdeefg
相關問題
- 1. Python:將ascii字符串轉換爲unicode字符串
- 2. 將Unicode字符轉換爲擴展ASCII
- 3. 將字符串轉換爲字符ascii
- 4. 將字符串轉換爲ascii和ascii爲字符串
- 5. 將字符串轉換爲ASCII和ASCII字符串
- 6. unicode字符串轉換到一個轉義ASCII字符串
- 7. 將Unicode字符串轉換爲Python中的ASCII 2.7
- 8. 如何將Unicode值轉換爲ASCII字符串?
- 9. javascript - 如何將unicode字符串轉換爲ascii
- 10. 將等效的unicode字符串轉換爲Java中的ASCII碼?
- 11. 如何將Unicode字符串轉換爲java中的ASCII碼
- 12. PHP - 在混合字符串中將ASCII轉換爲Unicode
- 13. 將unicode轉換爲ascii
- 14. 將unicode URL轉換爲ASCII
- 15. 將Ascii字符串轉換爲位流
- 16. 將字符串轉換爲ASCII值
- 17. 將字符串轉換爲ASCII
- 18. C++ ::將ASCII值轉換爲字符串
- 19. 將字符串轉換爲ASCII值python
- 20. 將字符串轉換爲ASCII碼
- 21. 將字符串轉換爲ASCII碼
- 22. 將字符串轉換爲ASCII值
- 23. 轉換HTML轉義字符串將純Unicode/ASCII
- 24. 將Unicode字符轉換爲等效的ASCII字符
- 25. C#將Unicode轉換爲字符串
- 26. 將unicode字符串轉換爲float
- 27. NSBatchUpdateRequest將字符串轉換爲unicode
- 28. 將unicode字符串轉換爲utf8
- 29. 將AnsiString轉換爲Unicode字符串
- 30. 將Unicode轉換爲字符串Java
一般情況下,這就是所謂的音譯。正常化到FormD和過濾將工作將組合拉丁字母轉換爲[基本拉丁文](http://www.unicode.org/charts/nameslist/index.html)字母但不是連字(dž,ǣ,ij,...)和這樣。看到這個[問題](https://stackoverflow.com/questions/1841874/how-to-transliterate-cyrillic-to-latin-text)。 –