在Teradata转换中将Unicode转换为拉丁文

问题描述

我一直试图在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.")