| 149 | |
| 150 | |
| 151 | RAR_CHARSET DetectTextEncoding(const byte *Data,size_t DataSize) |
| 152 | { |
| 153 | if (DataSize>3 && Data[0]==0xef && Data[1]==0xbb && Data[2]==0xbf && |
| 154 | IsTextUtf8(Data+3,DataSize-3)) |
| 155 | return RCH_UTF8; |
| 156 | |
| 157 | bool LittleEndian=DataSize>2 && Data[0]==255 && Data[1]==254; |
| 158 | bool BigEndian=DataSize>2 && Data[0]==254 && Data[1]==255; |
| 159 | |
| 160 | if (LittleEndian || BigEndian) |
| 161 | for (size_t I=LittleEndian ? 3 : 2;I<DataSize;I+=2) |
| 162 | if (Data[I]<32 && Data[I]!='\r' && Data[I]!='\n') |
| 163 | return RCH_UNICODE; // High byte in UTF-16 char is found. |
| 164 | |
| 165 | return RCH_DEFAULT; |
| 166 | } |
no test coverage detected