shell 使用Iconv在bash中转换时出现问题[已关闭]

2sbarzqh  于 2023-03-13  发布在  Shell
关注(0)|答案(1)|浏览(240)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

6天前关闭。
Improve this question
iconv: illegal input sequence at position 0
如果我有一个用希伯来语编写的字符串,但键盘布局是英文,我希望脚本返回相同的字符串,但键盘布局是希伯来语。
我是一个新的bash用户,所以这可能是一个愚蠢的问题,但我真的找不到答案。

#!/bin/bash

read -p "Give me a word: " word

echo "$word" | iconv -t cp1255 | tr $(echo "[/'\קראטוןםפ\]\[שדגכעיחלךף,\זסבהנמצתץ./'\קראטוןםפ}{שדגכעיחלך:\"|זסבהנמצ><?@#$^&~\]" | iconv -t cp1255) "[qwertyuiop\[\]asdfghjkl;'\\zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:\"|ZXCVBNM<>?@#$^&~\`]"

echo "$word" | tr "[qwertyuiop\[\]asdfghjkl;'\\zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:\"|ZXCVBNM<>?@#$^&~\`]" $(echo "[/'\קראטוןםפ\]\[שדגכעיחלךף,\זסבהנמצתץ./'\קראטוןםפ}{שדגכעיחלך:\"|זסבהנמצ><?@#$^&~\]"| iconv -t cp1255) | iconv -t cp1255
myss37ts

myss37ts1#

据我所知,您的问题只是一个简单的字符Map,其中一个集合中的每个字符都应该替换为第二个集合中的字符。tr(遗憾的是)不支持多字节字符,也不支持区域设置。
GNU sed支持Unicode。使用y命令,您可以在字符之间转换:

$ echo 'קראטו' | LC_ALL=C.UTF-8 sed 'y/קראטו/qwert/'
qwert

相关问题