Let Prometheus exporter plugin support utf8 characters (#8228)

diff --git a/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterServerImpl.java b/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterServerImpl.java
index b5ac137..cc3b7d5 100644
--- a/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterServerImpl.java
+++ b/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterServerImpl.java
@@ -28,6 +28,7 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.net.InetSocketAddress;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
 public class PrometheusExporterServerImpl extends ManagerBase implements PrometheusExporterServer, Configurable {
@@ -57,11 +58,21 @@
                 response = prometheusExporter.getMetrics();
                 responseCode = 200;
             }
-            httpExchange.getResponseHeaders().set("content-type", "text/plain");
-            httpExchange.sendResponseHeaders(responseCode, response.length());
+            byte[] bytesToOutput = response.getBytes(StandardCharsets.UTF_8);
+            httpExchange.getResponseHeaders().set("content-type", "text/plain; charset=UTF-8");
+            httpExchange.sendResponseHeaders(responseCode, bytesToOutput.length);
             final OutputStream os = httpExchange.getResponseBody();
-            os.write(response.getBytes());
-            os.close();
+            try {
+                os.write(bytesToOutput);
+            } catch (IOException e) {
+                LOG.error(String.format("could not export Prometheus data due to %s", e.getLocalizedMessage()));
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Error during Prometheus export: ", e);
+                }
+                os.write("The system could not export Prometheus due to an internal error. Contact your operator to learn about the reason.".getBytes());
+            } finally {
+                os.close();
+            }
         }
     }