2017-08-01 133 views
2

我需要显示utf-8编码中的文本。将部分字符串转换为另一个字符集

echo "sometext1 ${DATA[1]} \ 
sometext2 ${DATA[2]} \ 
sometext3 ${DATA[3]} \ 
sometext4 ${DATA[4]} \ 
sometext5 ${DATA[5]}" 
  • sometext *与UTF-8
  • $ {DATA [1]}包含数字
  • $编码文本{DATA [2]}包含数字
  • $ { DATA [3]}包含文本编码为windows-1251
  • $ {DATA [4]}包含数字
  • $ { DATA [5]}包含与窗口-1251

编码我试着做下面的文字:

DATA_A=$(${DATA[3]}|iconv -f "windows-1251" -t "UTF-8") 
DATA_B=$(${DATA[5]}|iconv -f "windows-1251" -t "UTF-8") 

echo "sometext1 ${DATA[1]} \ 
sometext2 ${DATA[2]} \ 
sometext3 $DATA_A \ 
sometext4 ${DATA[4]} \ 
sometext5 $DATA_B" 

而且我没有得到行文本的一部分转换。

如果我只是转换这些变量,那么一切都很好:

echo ${DATA[3]}|iconv -f "windows-1251" -t "UTF-8" 
echo ${DATA[5]}|iconv -f "windows-1251" -t "UTF-8" 

回答

2

echo在下面的命令

DATA_A=$(echo "${DATA[3]}"|iconv -f "windows-1251" -t "UTF-8") 
DATA_B=$(echo "${DATA[5]}"|iconv -f "windows-1251" -t "UTF-8") 

或避免管道

DATA_A=$(iconv -f "windows-1251" -t "UTF-8" <<< "${DATA[3]}") 
DATA_B=$(iconv -f "windows-1251" -t "UTF-8" <<< "${DATA[5]}") 
+0

感谢第二溶液加入失踪! – Andrey

相关问题