问题描述
我一直试图在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并不熟悉,但是您所拥有的字符串被双重错误地解码为df = df.reset_index().melt(id_vars=['index'])
df.columns = ['date','name','val']
,这是Windows-1252
又称ISO-8859-1
的变体。要在Python中修复的示例:
latin1
不是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.")