2009/11/24 Bram Moolenaar <[email protected]>:
>
>
> Winter wrote:
>
>> I use vim to read the file which is the  attachment of this mail.
>> This file can be read in with the encoding "cp936", and thing goes well.
>> When i read the file via “:e ++enc=sjis† ï¼ˆ with a wrong encoding ) ,
>> the vim shows "conversion error", and the characters get messed.
>> So , the conversion failed by this "sjis encoding“
>>
>> However, when i use the internal function of vim "iconv" like this.
>> ---------------code-----------------------
>> let line1=readfile("cp936.txt",'b')[0]
>> echo iconv(line1,"sjis","utf-8")
>> ---------------------------------------------
>> the result turned to be the "messed characters"
>>
>> I think this case is much the same as i used the "e ++enc=sjis".
>> SO , the fail should happened during the conversion.
>>
>>
>> The doc about the "iconv" is like, below :
>> iconv({expr}, {from}, {to}) *iconv()*
>>           The result is a String, which is the text {expr} converted
>>    from encoding {from} to encoding {to}.
>>            When the conversion fails an empty string is returned.
>>
>> According to the doc, i think the iconv should return the empty string.
>>
>> So, how can i know the happening of wrong conversion for the "iconv" ?
>> Or, is there some misunderstanding about iconv ?
>
> Yongwei Wu reported a similar problem last week.  It appears that
> iconv() tries conversion even when there are errors.  If you get an
> error message when loading the file that should also happen with
> iconv().
>
> Although getting an empty string on an error is good to notice something
> went wrong, other times you might want to get whatever could be
> converted.  We could add an argument tells it to fail or do a "best
> effort" conversion.  I'm not sure that will always be possible, we
> depend on what the iconv library does.

I like this idea.  It should be possible.  My understanding is that
iconv(3) stops on invalid multi-byte sequences.

-- 
Wu Yongwei
URL: http://wyw.dcweb.cn/

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui