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.