diff --git a/src/h5core/private/h5_model.h b/src/h5core/private/h5_model.h
index e00aef3bfea9695ebae417bf9950c3adacf6cd84..b429f63e5af93180ef17fa674f668da7acaa56c0 100644
--- a/src/h5core/private/h5_model.h
+++ b/src/h5core/private/h5_model.h
@@ -135,6 +135,12 @@ h5priv_map_enum_to_normalized_type (
 	case H5_STRING_T:
 		ret_value = H5_STRING;
 		break;
+	case H5_INT8_T: 
+		ret_value = H5_INT8;
+		break;
+	case H5_UINT8_T:
+		ret_value = H5_UINT8;
+		break;
 	case H5_INT16_T:
 		ret_value = H5_INT16;
 		break;
@@ -203,6 +209,12 @@ h5priv_normalize_type (
 			} else {
 				ret_value = H5_UINT16;
 			}
+		} else if (tsize==1) {
+			if (tsign == H5T_SGN_2) {
+				ret_value = H5_INT8;
+			} else {
+				ret_value = H5_UINT8;
+			}
 		}
 		break;
 	case H5T_FLOAT:
@@ -263,6 +275,13 @@ h5priv_map_hdf5_type_to_enum (
 			} else {
 				ret_value = H5_UINT16_T;
 			}
+		} else if (tsize==1) {
+			if (tsign == H5T_SGN_2) {
+				ret_value = H5_INT8_T;
+			}
+			else {
+				ret_value = H5_UINT8_T;
+			}
 		} else {
 			ret_value = H5_STRING_T;
 		}
diff --git a/src/h5core/private/h5_types.h b/src/h5core/private/h5_types.h
index dd88f7acf31b22d27fa51e0a210affa4df2f6a55..35b687b9c3c89a9f5be0be48fbb51227ebda8464 100644
--- a/src/h5core/private/h5_types.h
+++ b/src/h5core/private/h5_types.h
@@ -13,6 +13,8 @@
 #include <hdf5.h>
 #include "h5core/h5_types.h"
 
+#define H5_INT8			H5T_NATIVE_INT8
+#define H5_UINT8		H5T_NATIVE_UINT8
 #define H5_INT16                H5T_NATIVE_INT16
 #define H5_UINT16		H5T_NATIVE_UINT16
 #define H5_INT32                H5T_NATIVE_INT32
diff --git a/src/include/h5core/h5_types.h b/src/include/h5core/h5_types.h
index 07d232b66fb65c5fa8d7b91f2251f7da9d4410ed..bdb180c5be65b4983e4459366175bd6803df8f84 100644
--- a/src/include/h5core/h5_types.h
+++ b/src/include/h5core/h5_types.h
@@ -30,6 +30,8 @@ typedef int MPI_Datatype;
 
 typedef enum  {
 	H5_STRING_T,
+	H5_INT8_T,
+	H5_UINT8_T,
 	H5_INT16_T,
 	H5_UINT16_T,
 	H5_INT32_T,