I’ve just tested this and it worked well for me in Python (in 3D Slicer, on Windows, using UTF-8 code page):
someUnicodeByte = b"\xce\xa8\xd2\x94\xd2\x96\xd1\x84\xd2\xbe"
someUnicodeString = someUnicodeByte.decode('utf8')
view = slicer.app.layoutManager().threeDWidget(0).threeDView()
view.cornerAnnotation().GetTextProperty().SetFontFamily(vtk.VTK_FONT_FILE);
view.cornerAnnotation().GetTextProperty().SetFontFile('c:/Windows/Fonts/Caveat-Bold.ttf')
view.cornerAnnotation().SetText(vtk.vtkCornerAnnotation.LowerLeft,"abc " + someUnicodeString + " def")
view.forceRender()