2017-08-01 180 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

相關問題