Teradata 转换中的 Unicode 到拉丁语
Unicode to Latin in Teradata Conversion
我一直在尝试在 Teradata 版本 16.20.32.23 中将 Unicode 字符串转换为拉丁文。我看过很多在线论坛,但我无法制定解决方案。以下是我无法转换的一些字符串:
hyödyt
löydät
我尝试了以下解决方案,但功能 translate_chk 似乎不起作用。
SELECT CASE WHEN Translate_Chk ( 'hyödyt' using UNICODE_TO_LATIN) <> 0
THEN
''
WHEN Translate_Chk ( 'hyödyt' using UNICODE_TO_LATIN ) = 0
THEN
Translate ( 'hyödyt' using UNICODE_TO_LATIN WITH ERROR)
END AS transalated
我收到的错误是SELECT FAILED. 6706: The string contains untranslatable character.
我觉得我已经走到了死胡同,有人能帮我吗?
我不熟悉 Teradata,但你的字符串是 double-mis-decoded 和 Windows-1252
,这是 ISO-8859-1
a.k.a [=13= 的变体].在 Python 中修复的示例:
>>> s='hyödyt'
>>> s.encode('cp1252').decode('utf8').encode('cp1252').decode('utf8')
'hyödyt'
>>> s='löydät'
>>> s.encode('cp1252').decode('utf8').encode('cp1252').decode('utf8')
'löydät'
所以不是 Teradata 解决方案,但应该可以帮助您解决问题。
以下是我使用的 python 代码,它可能会对某些人有所帮助。为了使用下面的代码,您需要遵循以下说明:
根据您的 python 版本下载 chilkat 软件包:
https://www.chilkatsoft.com/python.asp#winDownloads
遵循下面的安装指南URL:
https://www.chilkatsoft.com/installWinPython.asp
打开IDLE shell和运行下面的代码
import sys
import chilkat
charset = chilkat.CkCharset()
charset.put_FromCharset("utf-8")
charset.put_ToCharset("ANSI")
charset.put_ToCharset("Windows-1252")
success = charset.ConvertFile("source_file_name.csv","target_file_name.csv")
if (success != True):
print(charset.lastErrorText())
sys.exit()
print("Success.")
我一直在尝试在 Teradata 版本 16.20.32.23 中将 Unicode 字符串转换为拉丁文。我看过很多在线论坛,但我无法制定解决方案。以下是我无法转换的一些字符串:
hyödyt
löydät
我尝试了以下解决方案,但功能 translate_chk 似乎不起作用。
SELECT CASE WHEN Translate_Chk ( 'hyödyt' using UNICODE_TO_LATIN) <> 0
THEN
''
WHEN Translate_Chk ( 'hyödyt' using UNICODE_TO_LATIN ) = 0
THEN
Translate ( 'hyödyt' using UNICODE_TO_LATIN WITH ERROR)
END AS transalated
我收到的错误是SELECT FAILED. 6706: The string contains untranslatable character.
我觉得我已经走到了死胡同,有人能帮我吗?
我不熟悉 Teradata,但你的字符串是 double-mis-decoded 和 Windows-1252
,这是 ISO-8859-1
a.k.a [=13= 的变体].在 Python 中修复的示例:
>>> s='hyödyt'
>>> s.encode('cp1252').decode('utf8').encode('cp1252').decode('utf8')
'hyödyt'
>>> s='löydät'
>>> s.encode('cp1252').decode('utf8').encode('cp1252').decode('utf8')
'löydät'
所以不是 Teradata 解决方案,但应该可以帮助您解决问题。
以下是我使用的 python 代码,它可能会对某些人有所帮助。为了使用下面的代码,您需要遵循以下说明:
根据您的 python 版本下载 chilkat 软件包: https://www.chilkatsoft.com/python.asp#winDownloads
遵循下面的安装指南URL: https://www.chilkatsoft.com/installWinPython.asp
打开IDLE shell和运行下面的代码
import sys
import chilkat
charset = chilkat.CkCharset()
charset.put_FromCharset("utf-8")
charset.put_ToCharset("ANSI")
charset.put_ToCharset("Windows-1252")
success = charset.ConvertFile("source_file_name.csv","target_file_name.csv")
if (success != True):
print(charset.lastErrorText())
sys.exit()
print("Success.")