Question: So, where can unsigned char be useful?
If I understood right, unsigned char can represent numbers from -128 to 127. But every encoding table uses positive numbers. So, unsigned char can't be used for representing characters. Am I right?

Answer: 
First of all, what you are representing is `signed char`, `unsigned char` ranges from 0 - 255.

To answer your questions about negative valued character, you are right that character encoding is done using positive values.

On a different view, just think of `signed` and `unsigned char` as integer representation.
Regarding *So, where can unsigned char be useful?* 

Here perhaps?: (a very simple example to test for ASCII digit)

```
BOOL isDigit(unsigned char c)
{
    if((c >= '0') &&(c <= '9')) return TRUE;
    return FALSE;
}  

```

By virtue of argument type `unsigned char` guarantees input will be a single ASCII character (there are 128 encoded ***[ASCII](https://www.google.com/search?q=ascii+chart&biw=1217&bih=813&tbm=isch&imgil=2U31hF4tTw886M%253A%253Bhttps%253A%252F%252Fencrypted-tbn1.gstatic.com%252Fimages%253Fq%253Dtbn%253AANd9GcS5_dU2V5FyZme1abvP1Z8tAuX8vc0lSoFlqzv8vuOz8zF1N-u7%253B715%253B488%253BJMtOixefP_tDJM%253Bhttp%25253A%25252F%25252Fwww.asciitable.com%25252F&source=iu&usg=__Rb0SCpQW-4OWooGF0j68QtFJ038%3D&sa=X&ei=j0krU-6OLo-CogTCxIKgCQ&sqi=2&ved=0CDQQ9QEwAQ#facrc=_&imgdii=_&imgrc=2U31hF4tTw886M%253A%3BJMtOixefP_tDJM%3Bhttp%253A%252F%252Fwww.asciitable.com%252Findex%252Fasciifull.gif%3Bhttp%253A%252F%252Fwww.asciitable.com%252F%3B715%3B488)*** possibilities, with ***[Extended ASCII](http://www.asciitable.com/)***, there are 255 possibilities). So, in this function, all that remains is to test input value for specific criteria (in this case is it a digit) There is no requirement for function to test for negative numbers. A regular `char` (i.e. signed) cannot contain the entire range of ASCII characters. The sizeof `unsigned char` is also significant in that it is only 1 byte as opposed to 4 bytes (typically, but not always) for say, an `int`