diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/IBlob.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/IBlob.java
index 3b78ced..5bb8122 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/IBlob.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/IBlob.java
@@ -39,18 +39,18 @@
 	public void setByteArrayValue(byte[] value);
 
 	/**
-	 * Returns the ASCII String representation of the byte array BLOB value
+	 * Returns the UTF8 String representation of the byte array BLOB value
 	 *
 	 * @return
 	 */
-	public String getASCIIString();
+	public String getUTF8String();
 
 	/**
-	 * Sets an ASCII string as an encoded byte array in the BLOB data element value
+	 * Sets an UTF8 string as an encoded byte array in the BLOB data element value
 	 * 
 	 * @param text
 	 */
-	public void setASCIIString(String text);
+	public void setUTF8String(String text);
 
 	/**
 	 * Gets the mime type of the content of the BLOB. The mime type states which
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/ConnectedBlob.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/ConnectedBlob.java
index 0cfcebe..791d10a 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/ConnectedBlob.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/ConnectedBlob.java
@@ -72,13 +72,13 @@
 	}
 
 	@Override
-	public String getASCIIString() {
-		return getLocalCopy().getASCIIString();
+	public String getUTF8String() {
+		return getLocalCopy().getUTF8String();
 	}
 
 	@Override
-	public void setASCIIString(String text) {
-		byte[] byteArray = text.getBytes(StandardCharsets.US_ASCII);
+	public void setUTF8String(String text) {
+		byte[] byteArray = text.getBytes(StandardCharsets.UTF_8);
 		setByteArrayValue(byteArray);
 	}
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/submodelelement/dataelement/Blob.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/submodelelement/dataelement/Blob.java
index 084d458..e6539f6 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/submodelelement/dataelement/Blob.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/submodelelement/dataelement/Blob.java
@@ -126,14 +126,14 @@
 	}
 
 	@Override
-	public String getASCIIString() {
+	public String getUTF8String() {
 		byte[] value = getByteArrayValue();
-		return new String(value, StandardCharsets.US_ASCII);
+		return new String(value, StandardCharsets.UTF_8);
 	}
 
 	@Override
-	public void setASCIIString(String text) {
-		setByteArrayValue(text.getBytes(StandardCharsets.US_ASCII));
+	public void setUTF8String(String text) {
+		setByteArrayValue(text.getBytes(StandardCharsets.UTF_8));
 	}
 
 	public void setMimeType(String mimeType) {
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedBlob.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedBlob.java
index 5a60db2..08ac9e9 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedBlob.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedBlob.java
@@ -30,7 +30,7 @@
 	@Before
 	public void build() {
 		blob = new Blob("testIdShort", "mimeType");
-		byte[] value = BLOB_CONTENT.getBytes(StandardCharsets.US_ASCII);
+		byte[] value = BLOB_CONTENT.getBytes(StandardCharsets.UTF_8);
 		blob.setByteArrayValue(value);
 		
 		VABConnectionManagerStub manager = new VABConnectionManagerStub(
@@ -45,7 +45,7 @@
 	@Test
 	public void testGetValue() {
 		assertEquals(blob.getValue(), connectedBlob.getValue());
-		byte[] byteArray = BLOB_CONTENT.getBytes(StandardCharsets.US_ASCII);
+		byte[] byteArray = BLOB_CONTENT.getBytes(StandardCharsets.UTF_8);
 		assertEquals(Base64.getEncoder().encodeToString(byteArray), blob.getValue());
 
 	}
@@ -56,7 +56,7 @@
 	@Test
 	public void testGetByteArrayValue() {
 		assertArrayEquals(blob.getByteArrayValue(), connectedBlob.getByteArrayValue());
-		assertArrayEquals(BLOB_CONTENT.getBytes(StandardCharsets.US_ASCII), connectedBlob.getByteArrayValue());
+		assertArrayEquals(BLOB_CONTENT.getBytes(StandardCharsets.UTF_8), connectedBlob.getByteArrayValue());
 	}
 	
 	/**
@@ -68,21 +68,21 @@
 	}
 	
 	/**
-	 * Tests if getASCIIString() returns the correct value
+	 * Tests if getUTF8String() returns the correct value
 	 */
 	@Test
-	public void testGetASCII() {
-		assertEquals(BLOB_CONTENT, connectedBlob.getASCIIString());
+	public void testGetUTF8() {
+		assertEquals(BLOB_CONTENT, connectedBlob.getUTF8String());
 	}
 
 	/**
-	 * Tests if SetASCII sets the correct value
+	 * Tests if SetUTF8 sets the correct value
 	 */
 	@Test
-	public void testSetASCII() {
-		connectedBlob.setASCIIString("NEW");
-		assertEquals("NEW", connectedBlob.getASCIIString());
-		assertArrayEquals("NEW".getBytes(StandardCharsets.US_ASCII), connectedBlob.getByteArrayValue());
+	public void testSetUTF8() {
+		connectedBlob.setUTF8String("NEW");
+		assertEquals("NEW", connectedBlob.getUTF8String());
+		assertArrayEquals("NEW".getBytes(StandardCharsets.UTF_8), connectedBlob.getByteArrayValue());
 	}
 
 	/**
@@ -90,10 +90,10 @@
 	 */
 	@Test
 	public void testSetByteArray() {
-		byte[] newArrayValue = "NEW".getBytes(StandardCharsets.US_ASCII);
+		byte[] newArrayValue = "NEW".getBytes(StandardCharsets.UTF_8);
 		connectedBlob.setByteArrayValue(newArrayValue);
-		assertEquals("NEW", connectedBlob.getASCIIString());
-		assertArrayEquals("NEW".getBytes(StandardCharsets.US_ASCII), connectedBlob.getByteArrayValue());
+		assertEquals("NEW", connectedBlob.getUTF8String());
+		assertArrayEquals("NEW".getBytes(StandardCharsets.UTF_8), connectedBlob.getByteArrayValue());
 	}
 
 	/**
@@ -101,9 +101,9 @@
 	 */
 	@Test
 	public void testSetValue() {
-		byte[] newArrayValue = "NEW".getBytes(StandardCharsets.US_ASCII);
+		byte[] newArrayValue = "NEW".getBytes(StandardCharsets.UTF_8);
 		String newStringValue = Base64.getEncoder().encodeToString(newArrayValue);
 		connectedBlob.setValue(newStringValue);
-		assertEquals("NEW", connectedBlob.getASCIIString());
+		assertEquals("NEW", connectedBlob.getUTF8String());
 	}
 }
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/submodelelement/dataelement/TestBlob.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/submodelelement/dataelement/TestBlob.java
index 1704faf..922e6ea 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/submodelelement/dataelement/TestBlob.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/submodelelement/dataelement/TestBlob.java
@@ -22,7 +22,7 @@
 
 	protected Blob blob;
 	protected String testString = "NEW!";
-	protected byte[] testBytes = testString.getBytes(StandardCharsets.US_ASCII);
+	protected byte[] testBytes = testString.getBytes(StandardCharsets.UTF_8);
 	protected String testBase64 = Base64.getEncoder().encodeToString(testBytes);
 	
 	@Before
@@ -52,18 +52,18 @@
 	@Test
 	public void testSetValue() {
 		blob.setValue(testBase64);
-		assertEquals(testString, blob.getASCIIString());
+		assertEquals(testString, blob.getUTF8String());
 		assertArrayEquals(testBytes, blob.getByteArrayValue());
 		assertEquals(testBase64, blob.getValue());
 	}
 	
 	/**
-	 * Tests if setASCII sets the correct value
+	 * Tests if setUTF8 sets the correct value
 	 */
 	@Test
-	public void testSetASCII() {
-		blob.setASCIIString(testString);
-		assertEquals(testString, blob.getASCIIString());
+	public void testSetUTF8() {
+		blob.setUTF8String(testString);
+		assertEquals(testString, blob.getUTF8String());
 		assertArrayEquals(testBytes, blob.getByteArrayValue());
 		assertEquals(testBase64, blob.getValue());
 	}
@@ -74,7 +74,7 @@
 	@Test
 	public void testSetByteArray() {
 		blob.setByteArrayValue(testBytes);
-		assertEquals(testString, blob.getASCIIString());
+		assertEquals(testString, blob.getUTF8String());
 		assertArrayEquals(testBytes, blob.getByteArrayValue());
 		assertEquals(testBase64, blob.getValue());
 	}
