This is what it produces as a byte stream.
Code:
$ cat foo.c
#include <stdio.h>
int main () {
printf("\x81 \x94 \x99 \x9A\n");
printf("ü ö Ö Ü\n");
printf("\x2e\n");
return 0;
}
$ gcc foo.c
$ ./a.out | hd
00000000 81 20 94 20 99 20 9a 0a c3 bc 20 c3 b6 20 c3 96 |. . . .... .. ..|
00000010 20 c3 9c 0a 2e 0a | .....|
00000016
$
All those c3 xx pairs are your UTF-8 encoded diacritic characters.
u - U with two Dots: U+00FC uuml - Unicode Character Table
Scroll down to the UTF-8 encoding.
Not sure what you expected to see with your \x81 line.