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.")