diff --git a/packages/rocketchat-lib/server/functions/setUsername.coffee b/packages/rocketchat-lib/server/functions/setUsername.coffee
index 664b48e9e8544f19331e09aef9aac9b33ab106b9..de418b6486aa406a1e0302d5212f9a83e2718623 100644
--- a/packages/rocketchat-lib/server/functions/setUsername.coffee
+++ b/packages/rocketchat-lib/server/functions/setUsername.coffee
@@ -3,7 +3,7 @@ RocketChat.setUsername = (user, username) ->
 	if not user or not username
 		return false
 
-	if not /^[0-9a-zA-Z-_.]+$/.test username
+	if not /^[0-9a-zA-Z-_.\u00C0-\u017F]+$/.test username
 		return false
 
 	# User already has desired username, return
diff --git a/packages/rocketchat-lib/server/methods/setUsername.coffee b/packages/rocketchat-lib/server/methods/setUsername.coffee
index 44bad046e86b54a52c56b521e0bd2d2e011b2dac..a501a9a3cee617d9b0788ee47f6613e2863382c3 100644
--- a/packages/rocketchat-lib/server/methods/setUsername.coffee
+++ b/packages/rocketchat-lib/server/methods/setUsername.coffee
@@ -10,7 +10,7 @@ Meteor.methods
 		if user.username is username
 			return username
 
-		if not /^[0-9a-zA-Z-_.]+$/.test username
+		if not /^[0-9a-zA-Z-_.\u00C0-\u017F]+$/.test username
 			throw new Meteor.Error 'username-invalid', "#{username} is not a valid username, use only letters, numbers, dots and dashes"
 
 		if not RocketChat.checkUsernameAvailability username
diff --git a/packages/rocketchat-mentions/client.coffee b/packages/rocketchat-mentions/client.coffee
index 2e981a1512130f41ca2fc25c072c9f5481ab0db6..083cd174b12986b046f1142f409c31cbae5b1c18 100644
--- a/packages/rocketchat-mentions/client.coffee
+++ b/packages/rocketchat-mentions/client.coffee
@@ -9,7 +9,8 @@ class MentionsClient
 			msg = message.html
 
 			mentions = []
-			message.msg.replace /(?:^|\s|\n)(?:@)([A-Za-z0-9-_.]+)/g, (match, mention) ->
+
+			message.msg.replace /(?:^|\s|\n)(?:@)([0-9a-zA-Z-_.\u00C0-\u017F]+)/g, (match, mention) ->
 				mentions.push mention
 
 			me = Meteor.user()?.username
@@ -32,7 +33,7 @@ class MentionsClient
 					return match.replace mention, "<a href=\"\" class=\"#{classes}\" data-username=\"#{username}\">#{mention}</a>"
 
 			channels = []
-			message.msg.replace /(?:^|\s|\n)(?:#)([A-Za-z0-9-_.]+)/g, (match, mention) ->
+			message.msg.replace /(?:^|\s|\n)(?:#)([A-Za-z0-9-_.\u00C0-\u017F]+)/g, (match, mention) ->
 				channels.push mention
 
 			if channels.length isnt 0
@@ -48,4 +49,4 @@ class MentionsClient
 			message.html = msg
 		return message
 
-RocketChat.callbacks.add 'renderMessage', MentionsClient
\ No newline at end of file
+RocketChat.callbacks.add 'renderMessage', MentionsClient
diff --git a/packages/rocketchat-mentions/server.coffee b/packages/rocketchat-mentions/server.coffee
index e51e5bed70c32a1a3625e75fecaa8f97ce5a58df..1a971366f3ef1b47d6c2d1ab140860e916c0ee2c 100644
--- a/packages/rocketchat-mentions/server.coffee
+++ b/packages/rocketchat-mentions/server.coffee
@@ -7,7 +7,7 @@ class MentionsServer
 	constructor: (message) ->
 		# If message starts with /me, replace it for text formatting
 		mentions = []
-		message.msg.replace /(?:^|\s|\n)(?:@)([A-Za-z0-9-_.]+)/g, (match, mention) ->
+		message.msg.replace /(?:^|\s|\n)(?:@)([A-Za-z0-9-_.\u00C0-\u017F]+)/g, (match, mention) ->
 			mentions.push mention
 		if mentions.length isnt 0
 			mentions = _.unique mentions
@@ -25,7 +25,7 @@ class MentionsServer
 				message.mentions = verifiedMentions
 
 		channels = []
-		message.msg.replace /(?:^|\s|\n)(?:#)([A-Za-z0-9-_.]+)/g, (match, mention) ->
+		message.msg.replace /(?:^|\s|\n)(?:#)([A-Za-z0-9-_.\u00C0-\u017F]+)/g, (match, mention) ->
 			channels.push mention
 
 		if channels.length isnt 0
diff --git a/server/methods/createChannel.coffee b/server/methods/createChannel.coffee
index c3dff18c170b06fda7c9a9cec613a466acfb2532..a5c6feaf868626f0e59d2d70dc0e6cd821525d93 100644
--- a/server/methods/createChannel.coffee
+++ b/server/methods/createChannel.coffee
@@ -3,7 +3,7 @@ Meteor.methods
 		if not Meteor.userId()
 			throw new Meteor.Error 'invalid-user', "[methods] createChannel -> Invalid user"
 
-		if not /^[0-9a-z-_]+$/.test name
+		if not /^[0-9a-zA-Z-_\u00C0-\u017F]+$/.test name
 			throw new Meteor.Error 'name-invalid'
 
 		if RocketChat.authz.hasPermission(Meteor.userId(), 'create-c') isnt true
diff --git a/server/methods/createPrivateGroup.coffee b/server/methods/createPrivateGroup.coffee
index 81f20a0bd4d1ed61aedf0d2bc07c011e1f6afe8b..f208d4562aae0316de71dd0638218ab3e80153e8 100644
--- a/server/methods/createPrivateGroup.coffee
+++ b/server/methods/createPrivateGroup.coffee
@@ -8,7 +8,7 @@ Meteor.methods
 
 		console.log '[methods] createPrivateGroup -> '.green, 'userId:', Meteor.userId(), 'arguments:', arguments
 
-		if not /^[0-9a-z-_]+$/.test name
+		if not /^[0-9a-zA-Z-_\u00C0-\u017F]+$/.test name
 			throw new Meteor.Error 'name-invalid'
 
 		now = new Date()
diff --git a/server/methods/saveRoomName.coffee b/server/methods/saveRoomName.coffee
index 7dba0b2d710a8774f4cd5e6d4b97ddd5c35c5442..621be3975ec340bc96a2e7ba081a2e7809895023 100644
--- a/server/methods/saveRoomName.coffee
+++ b/server/methods/saveRoomName.coffee
@@ -12,7 +12,7 @@ Meteor.methods
 		#if room.u._id isnt Meteor.userId() and not hasPermission
 			throw new Meteor.Error 403, 'Not allowed'
 
-		if not /^[0-9a-z-_]+$/.test name
+		if not /^[0-9a-zA-Z-_\u00C0-\u017F]+$/.test name
 			throw new Meteor.Error 'name-invalid'
 
 		name = _.slugify name
diff --git a/server/methods/setAvatarFromService.coffee b/server/methods/setAvatarFromService.coffee
index 90df44e2ad2b8a63d9852e1a75c4664ca63d0ec7..8ed563d6ccc6a9715590b6204fb133cc816a2125 100644
--- a/server/methods/setAvatarFromService.coffee
+++ b/server/methods/setAvatarFromService.coffee
@@ -14,7 +14,7 @@ Meteor.methods
 		{image, contentType} = RocketChatFile.dataURIParse dataURI
 
 		rs = RocketChatFile.bufferToStream new Buffer(image, 'base64')
-		ws = RocketChatFileAvatarInstance.createWriteStream "#{user.username}.jpg", contentType
+		ws = RocketChatFileAvatarInstance.createWriteStream encodeURIComponent("#{user.username}.jpg"), contentType
 		ws.on 'end', Meteor.bindEnvironment ->
 			Meteor.setTimeout ->
 				RocketChat.models.Users.setAvatarOrigin user._id, service
diff --git a/server/restapi/restapi.coffee b/server/restapi/restapi.coffee
index 90ba65e19b124ed1a2a935520b835c535a8d863d..4d04853ffabbe232bc2ea6e2afb38be6751ea209 100644
--- a/server/restapi/restapi.coffee
+++ b/server/restapi/restapi.coffee
@@ -61,7 +61,7 @@ Api.testapiValidateUsers =  (users) ->
 		if user.name?
 			if user.email?
 				if user.pass?
-					if  /^[0-9a-z-_]+$/i.test user.name
+					if  /^[0-9a-zA-Z-_\u00C0-\u017F]+$/i.test user.name
 						if  /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]+\b/i.test user.email
 							continue
 		throw new Meteor.Error 'invalid-user-record', "[restapi] bulk/register -> record #" + i + " is invalid"
@@ -125,7 +125,7 @@ Api.testapiValidateRooms =  (rooms) ->
 		if room.name?
 			if room.members?
 				if room.members.length > 1
-					if  /^[0-9a-z-_]+$/i.test room.name
+					if  /^[0-9a-zA-Z-_\u00C0-\u017F]+$/i.test room.name
 						continue
 		throw new Meteor.Error 'invalid-room-record', "[restapi] bulk/createRoom -> record #" + i + " is invalid"
 	return